[C con Clase] problemas al ejecutar

Steven Davidson srd4121 en njit.edu
Dom Mayo 11 06:35:24 CEST 2008


Hola Luchito,

luchito tu amigo wrote:
> Quisiera que ayuden con el siguiente codigo, el problema es que
> cuando se ejecuta no muestra el resultado y quisiera saber que esta
> mal o tengo que agregar algo.
>  
> El siguiente codigo tiene que hallar el promedio de una lista.
>  

Veamos el código.

>  
> #include<iostream.h>

Deberías usar la nomenclatura actual de ANSI C++. El nombre correcto es 
<iostream>. También deberías agregar:

using namespace std;

> #include<conio.h>
> main()

Debes ser explícito con el tipo de retorno de la función 'main()'. Esto es,

int main()

> {
>  int A[5];
>  int n,x,i,p;
>  

Sugiero escoger nombres descriptivos. Por ejemplo,

int lista[5];
int i,n, suma, promedio;

>   cout<<"Ingresar numero de elementos: ";   cin>>n;
>  x=0;
>  
>  for(i=1;i<=n;i++)

Aquí tienes un error. Los índices de un array siempre empiezan por cero. 
Por lo tanto, 'i' debe asignarse los valores de 0 a 'n-1'. Esto es,

for( i=0; i<n; i++ )

>  {
>   cout<<"A["<<i<<"]=";

Si quieres mostrar los subíndices a partir de 1, entonces puedes hacer 
una suma aquí. Esto es,

cout << "A[" << i+1 << "]=";

>   cin>>A[i];
>   cout<<endl;
>   x=x+A[i];

Sugiero usar el operador +=, ya que es más eficiente.

>     } 
>    
>   p=x/n;

Esto es correcto, pero seguramente no es el resultado esperado ni 
deseado. El resultado de una operación aritmética tiene el mismo tipo 
que los operandos de tal operación. En tu caso, los dos operandos son 
enteros de tipo 'int' y por tanto el resultado es un valor del mismo 
tipo 'int'. Esto significa que,

41 / 4 = 10, en lugar del esperado, 10.25

Si quieres un cociente de coma flotante, entonces necesitarás que los 
operandos sean de tipo 'float', por ejemplo. Esto lo puedes hacer 
realizando un cásting explícito de uno de los operandos. Esto sería,

float promedio;
...
promedio = suma / (float) n;

La regla de promoción se aplicará al otro operando, cambiando su tipo a 
'float', en este caso.

>   cout<<"el promedio es "<<p<<endl;
>   getch();

La función 'main()' debe retornar 0 (cero), si su ejecución terminó con 
éxito.

> }
>  


Espero que todo esto te oriente.

Steven







Más información sobre la lista de distribución Cconclase