• Sábado 16 de Noviembre de 2024, 00:30

Autor Tema:  no entiendo porque pasa esto  (Leído 909 veces)

spainlord

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
no entiendo porque pasa esto
« en: Domingo 16 de Noviembre de 2008, 21:36 »
0
por alguna razon al imprimir el vector original y el vector B me da numeros muy diferentes a los ingresados(basura). Alguien me ayuda?
Código: Text
  1. /*5.Desarrollar un programa en C, el cual Calcule el promedio de n valores almacenados
  2. en un vector. Determinar además cuantos son mayores que el promedio, imprimir el
  3. promedio, el número de datos mayores que el promedio y una lista de valores mayores
  4. que el promedio, así como el vector original.*/
  5. #include<stdio.h>
  6. /*int n,i,j=0,A[' '],B[' '],sum=0,cont=0;
  7. float prom;*/
  8. void lectura(int n);
  9. int suma(int n);
  10. float prom(int sum, int n);
  11. int calc(float prom,int n);
  12. void impr(int cont,float prome,int n);
  13.  
  14. void main(void)
  15. {
  16.   int n,sum,cont;
  17.   float prome;
  18.   do
  19.   {
  20.     printf("Ingresa la cantidad de elementos en el arreglo A: ");
  21.     scanf("%d",&n);
  22.   }while(n<1);
  23.   lectura(n);
  24.   sum= suma(n);
  25.   prome=prom(sum,n);
  26.   cont=calc(prome,n);
  27.   impr(cont,prome,n);
  28. }
  29. void lectura(int n)
  30. {
  31.   int i=0,A[' '];
  32.   printf("nIngresa los valores del arreglo A: ");
  33.   for(i=0;i<n;i++)
  34.     {
  35.       printf("n A[%d]: ",i+1);
  36.       scanf("%d",&A[i]);
  37.     }
  38. }
  39. int suma(int n)
  40. {
  41.  int i=0,sum=0,A[' '];
  42.  for(i=0;i<n;i++)
  43.  sum=sum+A[i];
  44.  return sum;
  45. }
  46.  
  47. float prom(int sum,int n)
  48. {
  49.     float prom;
  50.     prom=(float)sum/n;
  51.     return prom;
  52. }
  53.  
  54. int calc(float prome,int n)
  55. {
  56.   int A[' '],i=0,j=0,cont=0,B[' '];
  57.     for(i=0;i<n;i++)
  58.      {
  59.         if(A[i]>prome)
  60.         {
  61.           cont=cont+1;
  62.           B[j]=A[i];
  63.           j++;
  64.         }
  65.      }
  66.   return cont;
  67. }
  68.  
  69. void impr(int cont,float prome,int n)
  70. {
  71.     int A[' '],i=0,j=0,B[' '];
  72.     printf("ntVector original: ");
  73.     for(i=0;i<n;i++)
  74.     printf(" %d ",A[i]);
  75.     printf("ntPromedio: %.2f",prome);
  76.     printf("ntCantidad de valores mayores al promedio: %d",cont);
  77.     printf("ntLos valores mayores que el promedio: ");
  78.     for(j=0;j<cont;j++)
  79.     printf(" %d ",B[j]);
  80. }
  81.  
  82.  

spainlord

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: no entiendo porque pasa esto
« Respuesta #1 en: Domingo 16 de Noviembre de 2008, 22:31 »
0
ya lo resolvi, gracias para cualquiiera que lo haya leido, solamente olvide que como la declare a A[' '] como local en cada funcion, su valor se perdia y el programa usaba basura almacenada ^.^
...asi que deberia declararla como global?..porque he leido que no es recomendable, auqneu en este caso no se me ocurre otra cosa