Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemita con el siguiente programita de prueba

Estas en el tema de Problemita con el siguiente programita de prueba en el foro de C/C++ en Foros del Web. #include <iostream> using namespace std; float m [4]; int contador = 0; int suma = 0; int main() { while (contador < 5) { contador ...
  #1 (permalink)  
Antiguo 18/01/2011, 06:22
 
Fecha de Ingreso: enero-2011
Mensajes: 16
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Problemita con el siguiente programita de prueba

#include <iostream>

using namespace std;

float m [4];
int contador = 0;
int suma = 0;
int main()
{
while (contador < 5)
{
contador = contador + 1;
cout<<"Ingrese valor numero "<<contador<<":";
cin>> m[contador];
suma = suma + m[contador];
}
cout<<"La suma de los 5 valores ingresador es: "<<suma;
}

Cuando llega a la ultima linea en la que deberia mostarme la suma de todos los valores asignados a la matriz me sale un cuadro de dialogo "el programa dejo de funcionar"
Si alguien fuera tan amable de ayudarme se lo agradeceria un monton. Gracias
Agustin
  #2 (permalink)  
Antiguo 18/01/2011, 06:49
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Problemita con el siguiente programita de prueba

Cita:
Iniciado por agustinsouth Ver Mensaje
#include <iostream>

using namespace std;

float m [4];
int contador = 0;
int suma = 0;
int main()
{
while (contador < 5)
{
contador = contador + 1;
cout<<"Ingrese valor numero "<<contador<<":";
cin>> m[contador];
suma = suma + m[contador];
}
cout<<"La suma de los 5 valores ingresador es: "<<suma;
}

Cuando llega a la ultima linea en la que deberia mostarme la suma de todos los valores asignados a la matriz me sale un cuadro de dialogo "el programa dejo de funcionar"
Si alguien fuera tan amable de ayudarme se lo agradeceria un monton. Gracias
Agustin
Hola bueno revise tu codigo y al tratar de correrlo me dio un error porque el array lo tiene como float y en la cuarta iteracion me daba error asi que lo cambie a int y funciono.. bueno ya te muestro como lo hice para que te guies:
Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int m [4];
  6. int contador = 1;
  7. int suma = 0;
  8. int indice;
  9. int main()
  10. {
  11.  
  12.  
  13. for(int i =0; i<=4; i++)
  14. {
  15.     cout<<"Ingrese valor numero "<< contador <<": ";
  16.     contador++;
  17.     cin >> m[i];
  18.     suma += m[i];
  19. }
  20.  
  21. cout<<"La suma de los 5 valores ingresador es: "<< suma <<endl;
  22. system("pause");
  23. }

por favor la proxima vez usa las etiquetas Highlight para poder ver bien el codigo y que sea mas facil de entender.
  #3 (permalink)  
Antiguo 18/01/2011, 08:35
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 10 meses
Puntos: 73
Respuesta: Problemita con el siguiente programita de prueba

El error venía del bucle. Me explico:

Cuando entras al bucle while, lo primero que haces es incrementar contador. Con ello:

1. El primer número que metas ya no va a m[0], sino a m[1].

2. Cuando contador ya vale 4, entras a una nueva iteración, incrementas contador, ya vale 5, PEEEEEERO no compruebas su valor (recuerda que el bucle while comprueba la condición ANTES de efectuar la iteración). Acto seguido, estás metiendo un valor en m[5], que no existe.

3. Recuerda que, en C / C++, un array de n elementos tiene los índices 0 a n-1. Es decir, tu array m[4] irá de m[0] a m[3]. Tal como tienes el bucle has metido valores para m[4] y m[5] (que no existen). Las consecuencias de un error como este pueden ser graves.

Etiquetas: siguiente, pruebas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:24.