[C con Clase] Dudas con el programa

Steven Davidson srd4121 en njit.edu
Mie Feb 10 06:18:28 CET 2010


Hola Anónimo,

anónimo wrote:
> Hola estoy escribiendo este programa pero no se si lo he escrito
> bien, estaba escribiendo el programa que se pide en el capitulo 10 en
> que se deben ingresar 10 numeros desde el teclado y el programa debe
> sumarlos indicando el resultado y el promedio. El problema que tengo
> es que luego de tomar los 10 numeros el programa se cierra y no puedo
> lograr que realice la suma y el promedio de los mismos. Adjunto dos
> variables del programa que hice pero que de igual forma ninguno de
> los dos funciono. Agradezco una respuesta.
> 

Veamos los códigos fuentes.

> Prog. 1:
> 
> #include <iostream>
> using namespace std;
> 
> int main ()
> {
>     int suma, promedio, i; 
>     int num[] = cin >> num[i];

Esto no es correcto. Al inicializar un array, debes seguir la sintaxis 
adecuada. Por ejemplo,

int num[] = { 0, 1, 5, 9, -3 };

En tu caso, debes indicar la cantidad máxima de elementos de este array.

El segundo error es indicar 'i' como el índice, ya que 'i' no tiene 
ningún valor inicial conocido. Por lo tanto, estás accediendo a un 
elemento arbitrario.

Te interesa realizar la primera lectura para el primer elemento, lo cual 
significa que el índice del array es 0 (cero). Esto es,

int num[10];    // Definimos un array de 10 elementos
cin >> num[0];  // Leemos y asignamos un número para el primer elemento

>     int x = (0*10^0 + 1*10^1);

Esto no tiene sentido. El operador ^ no es la potencia en C++. De hecho, 
C++ no tiene ningún operador para la potencia. Si quieres que 'x' 
contenga 10, entonces haz eso mismo:

int x = 10;

>     suma ==0;    

Esto no es una asignación, que seguramente es lo que quieres hacer. Escribe,

suma = 0;

> 
>     cout<< "introduzca los 10 numeros por favor..." << endl;
>     for (i=0;i<=9;i++);

Aquí tienes el error lógico. Agregas un punto y coma al final de 'for'. 
Lo que te interesa es repetir la sentencia posterior.

>     suma =+ num[i];

Esto es incorrecto. El operador es +=.

>     cout<< "la suma de todos los numeros es: "<< suma << endl;
>     promedio = (suma / x);

Esto es correcto, pero no es necesario indicar paréntesis.

Ten presente que la división es entre enteros y por tanto el cociente 
será entero.

>     cout<< "el promedio de los mismos es: " << promedio << endl;
>     
>     cin.get ();
>     return 0;
> }
> 
> 
> Prog. 2:
> 
> #include <iostream>
> using namespace std;
> 
> int main ()
> {
>     int suma, promedio, i; 
>     int num[10] = [0;1;2;3;4;5;6;7;8;9};

Esto es incorrecto. En primer lugar la inicialización de array se hace 
con las llaves {}. En segundo lugar, el símbolo de separación es la coma 
y no el punto y coma. Escribe,

int num[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

>     int x = (0*10^0 + 1*10^1);
>     suma ==0;    
>     

Como ya he mencionado, aquí tienes algunos errores.

>     cout << "introduzca los 10 numeros por favor..." << endl;
>     cin >> num [0];
>     cin >> num [1];
>     cin >> num [2];
>     cin >> num [3];
>     cin >> num [4];
>     cin >> num [5];
>     cin >> num [6];
>     cin >> num [7];
>     cin >> num [8];
>     cin >> num [9];
> 

Esto no es práctico, pero supongo que estabas teniendo problemas con la 
primera versión.

>     for (i=0;i<=9;i++);
>     suma =+ num[i];

Aquí tienes los mismos errores que comenté previamente.

>     cout<< "la suma de todos los numeros es: "<< suma << endl;
>     promedio = (suma / x);
>     cout<< "el promedio de los mismos es: " << promedio << endl;
>     
>     cin.get ();
>     return 0;
> }
>             

Espero que esto te aclare las dudas.

Steven






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