Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Morringos en 29 Agosto 2011, 05:43 am



Título: Real funcionamiento de "scanf"?
Publicado por: Morringos en 29 Agosto 2011, 05:43 am
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.

Código
  1. #include <stdio.h>
  2.  
  3.  
  4. float maximum(float x, float y);
  5. float minimum(float x, float y);
  6. void prn_info(void);
  7.  
  8. int main()
  9. {
  10.    int i,n;
  11.    float max, min, x;
  12.  
  13.    prn_info();
  14.    printf("Input n:   ");
  15.    scanf("%d", &n);
  16.    printf("\nInput %d real numbers:    ", n);
  17.    scanf("%f", &x);
  18.    max = min = x;
  19.  
  20.    for (i = 2; i <= n; ++i){
  21.        scanf("%f", &x);
  22.        max = maximum(max, x);
  23.        min = minimum(min, x);
  24.    }
  25.  
  26.    printf("\n%s%11.3f\n%s%11.3f\n\n",
  27.           "Maximum value:",max,
  28.           "Minimum value:", min);
  29.  
  30.    return 0;
  31. }
  32.  
  33. float maximum(float x, float y){
  34.    if (x > y)
  35.        return x;
  36.    else
  37.        return y;
  38. }
  39.  
  40. float minimum(float x, float y){
  41.    if (x < y)
  42.        return x;
  43.    else
  44.        return y;
  45. }
  46.  
  47. void prn_info(void){
  48.    printf("\n%s\n%s\n\n",
  49.           "This program reads an integer value for n, and then",
  50.           "processes n real numbers to find max and min values.");
  51. }
  52.  

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.


Título: Re: Real funcionamiento de "scanf"?
Publicado por: rir3760 en 29 Agosto 2011, 06:07 am
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


Título: Re: Real funcionamiento de "scanf"?
Publicado por: Morringos en 29 Agosto 2011, 06:28 am
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.