Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Ander123 en 27 Agosto 2012, 17:55 pm



Título: programa confuso
Publicado por: Ander123 en 27 Agosto 2012, 17:55 pm
Alguien me podria explicar este programa, esque estoy empezando y no entiendo el funcionamiento
Código:
  #include <stdio.h>
main()
{
    int i, media=1, suma=0, tabla[4];
    printf("\nEscriba 4 numeros\n\n");
    for (i=0; i<=3; i++)
          scanf("%d", &tabla[i]);
          for (i=0; i<=3; i++)
              {suma+=tabla[i];
              media=(suma/4);}
          printf("\n\n...La media es: %d", media);
          printf("\nLos numeros introducidos son: ");
              for (i=0; i<=3; i++)
                    printf(" %d ", tabla[i]);   
              getchar();
              getchar();
                   
                   
}


Título: Re: programa confuso
Publicado por: The Swash en 27 Agosto 2012, 20:00 pm
Hola,

Ese código podría representarse de una forma más legible con etiquetas geshi y además con una mejor indentación:

Código
  1. #include <stdio.h>
  2. int main()
  3. {
  4.    int i, media=1, suma=0, tabla[4];
  5.    printf("\nEscriba 4 numeros\n\n");
  6.    for (i=0; i<=3; i++)
  7.        scanf("%d", &tabla[i]);
  8.  
  9.    for (i=0; i<=3; i++)
  10.        suma+=tabla[i];
  11.  
  12.    media=(suma/4);
  13.    printf("\n\n...La media es: %d", media);
  14.    printf("\nLos numeros introducidos son: ");
  15.    for (i=0; i<=3; i++)
  16.        printf(" %d ", tabla[i]);    
  17.    return 0;                    
  18. }

Sencillamente el código pide 4 números que posteriormente los almacena en un arreglo de enteros y luego los suma y saca su media. Muestra los numeros que ingresaste, la media y esto es todo.

Un saludo,
Iván Portilla.


Título: Re: programa confuso
Publicado por: ecfisa en 27 Agosto 2012, 20:02 pm
Hola Ander123.

Lo que hace el código es pedir y guardar elementos en un arreglo y obtener su media aritmética (promedio). Te pongo el código comentado para aclarar el funcionamiento:

Código
  1. #include <stdio.h>
  2.  
  3. main() {
  4.  int i,      /* variable de control */
  5.  suma = 0,   /* almacena la suma de los elementos del arreglo */
  6.  tabla[4];   /* arreglo */
  7.  
  8.  /* pedir los elementos */
  9.  printf("\nEscriba 4 numeros\n");
  10.  for (i=0; i<4; i++)
  11.    scanf("%d", &tabla[i]);
  12.  
  13.  /* almacenar la suma de los elementos en 'suma' */
  14.  for (i=0; i<4; i++)
  15.    suma  += tabla[i];
  16.  
  17.  /* mostrar media arimetica */
  18.  printf("\n\nLa media es: %8.2f", suma / 4.0);
  19.  
  20.  /* mostrar los elementos */
  21.  printf("\nLos numeros introducidos son: ");
  22.  for (i=0; i<4; i++)
  23.    printf(" %d ", tabla[i]);
  24.  
  25.  /* pausa para ver el resultado */
  26.  while(getchar()!= '\n');
  27.  getchar();
  28. }
  29.  

Quite la variable media por que no es necesaria.

Saludos.


Título: Re: programa confuso
Publicado por: bettu en 27 Agosto 2012, 22:31 pm
Bueno, tal y como te han comentado arriba lo que hace el programa es:

- Se declara las variables, una de ellas es un vector de 4 posiciones para, posteriormente, almacenar los numeros introducidos en cada una de las 4 posiciones.
- Al introducir los 4 numeros, se recorre cada una de las posiciones del vector y va sumando los valores depositandolo en la variable suma.
- Finalmente, te muestra por pantalla los numeros introducidos que se han almacenado en el vector y te muestra la media.


Cuando cojas un poco más de experiencia, te recomiendo que en lugar de declarar la variable TABLA[4] lo hagas así: TABLA[MAX], quedando así:

Código
  1. #include <stdio.h>
  2. #define MAX 4
  3.  
  4. int main()
  5. {
  6.    int i, media=1, suma=0, tabla[MAX];
  7.  

Pero bueno, tiempo al tiempo :)

Saludos!


Título: Re: programa confuso
Publicado por: bytemachine en 4 Septiembre 2012, 07:06 am
Bueno, tal y como te han comentado arriba lo que hace el programa es:

- Se declara las variables, una de ellas es un vector de 4 posiciones para, posteriormente, almacenar los numeros introducidos en cada una de las 4 posiciones.
- Al introducir los 4 numeros, se recorre cada una de las posiciones del vector y va sumando los valores depositandolo en la variable suma.
- Finalmente, te muestra por pantalla los numeros introducidos que se han almacenado en el vector y te muestra la media.


Cuando cojas un poco más de experiencia, te recomiendo que en lugar de declarar la variable TABLA[4] lo hagas así: TABLA[MAX], quedando así:

Código
  1. #include <stdio.h>
  2. #define MAX 4
  3.  
  4. int main()
  5. {
  6.    int i, media=1, suma=0, tabla[MAX];
  7.  

Pero bueno, tiempo al tiempo :)

Saludos!

Yo no entiendo que es lo que hace lo de MAX 4, :s, tengo también poco tiempo en C/C++ y no había visto ejemplos como ese ¿De casualidad no se puede tomar como para que el usuario introduzca la longitud del array?, disculpen mi ignorancia o si pudiera ser una pregunta estúpida

Saludos


Título: Re: programa confuso
Publicado por: ecfisa en 4 Septiembre 2012, 11:02 am
Hola bytemachine.

Citar
¿De casualidad no se puede tomar como para que el usuario introduzca la longitud del array?

Si por supuesto, por ejemplo:
Código
  1. int main() {
  2.  int i,n,*vec;
  3.  
  4.  printf("Nro de elementos: ");
  5.  scanf("%d",&n);
  6.  
  7.  vec = (int*)malloc(sizeof(int)*n);
  8.  
  9.  for(i=0; i<n; i++) vec[i] = i;
  10.  ...
  11.  
  12.  free(vec);
  13.  return 0;
  14. }
  15.  

Saludos.

Edito: Me olvide... Aunque no está especificado, seguramente MAX estaría definido de este modo:

Código
  1. ...
  2. #define MAX 4
  3. ...
  4.  

A partir de allí MAX tiene el valor 4, es decir que se puede utilizar en lugar de él.
La ventaja de utilizar MAX en lugar de '4', es que basta cambiar el valor en la definición para que afecte a todo el código. De otro modo habría que cambiar cada ocurrencia de '4'.



Título: Re: programa confuso
Publicado por: bytemachine en 4 Septiembre 2012, 20:19 pm
Ya entiendo xD, gracias por la respuesta, andaba realmente perdida jaja, estaba confundiendo con lo se MAX se utilizaba para que el usuario pusiera la longitud de la matriz, (pensé que era otro metodo)

Y sobre el código, si, así si me lo sabía, solo estaba confundida por lo de MAX, muchas gracias por responderme :D

Saludos