Real funcionamiento de "scanf"?

Iniciado por Morringos, 29 Agosto 2011, 05:43 AM

0 Miembros y 1 Visitante están viendo este tema.

Morringos

Buenas noches, tardes o días a todos   :xD, hoy vengo con una duda que llevo minutos tratándole de solucionarla y es debido al funcionamiento de la función "scanf", les aclaro que soy novato en esto de lenguaje C. Ok, ahí les va a el código para explicarles mi duda.


#include <stdio.h>


float maximum(float x, float y);
float minimum(float x, float y);
void prn_info(void);

int main()
{
    int i,n;
    float max, min, x;

    prn_info();
    printf("Input n:   ");
    scanf("%d", &n);
    printf("\nInput %d real numbers:    ", n);
    scanf("%f", &x);
    max = min = x;

    for (i = 2; i <= n; ++i){
        scanf("%f", &x);
        max = maximum(max, x);
        min = minimum(min, x);
    }

    printf("\n%s%11.3f\n%s%11.3f\n\n",
           "Maximum value:",max,
           "Minimum value:", min);

    return 0;
}

float maximum(float x, float y){
    if (x > y)
        return x;
    else
        return y;
}

float minimum(float x, float y){
    if (x < y)
        return x;
    else
        return y;
}

void prn_info(void){
    printf("\n%s\n%s\n\n",
           "This program reads an integer value for n, and then",
           "processes n real numbers to find max and min values.");
}


Es un código que lo vi de un libro que estoy leyendo de C, pero la gran duda es el por qué la variable "i" la inicializa con el valor de 2 en el ciclo for, y luego, en el ciclo for vuelve a utilizar la función "scanf", eso es lo que no entiendo el por qué eso. Al momento de que el usuario ponga por ejemplo, n=2, y ponga los números 10 y 20, la primera sentencia "scanf" captura el primer número y luego en el ciclo for captura el 2do número, o cómo es que funciona en si esa partesita y la función "scanf"?.

Bueno, espero y haya sido claro con mi duda, que la verdad no logro sacarle bien la lógica al código, mas bien, creo que se debe a la falta del entendimiento de la función "scanf", si alguien puediera explicarmelo, sería de gran ayuda, o tal vez, un link donde explique su funcionamiento.

Saludos.
Gracias.

rir3760

No veo cual es la duda. El objetivo del programa se indica mediante una funcion con:

"This program reads an integer value for n, and then",
"processes n real numbers to find max and min values."

La funcion "scanf" se utiliza primero fuera del bucle para leer el primer valor tomandolo como el maximo y minimo hasta el momento.

En el bucle se leen los numeros restantes con scanf y se comparan con el maximo y el minimo ajustandolos si es necesario.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

Morringos

Baaa.... muchas gracias por la respuesta, pero era cuestión de que me esperara más y lo analizara.

Gracias de todos modos bro.
Saludos.