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

problema con wxDev-C++

Estas en el tema de problema con wxDev-C++ en el foro de C/C++ en Foros del Web. Hola, me he descargado el wxDev-C++ y he hecho el siguiente ejercicio. Cuando lo compilofunciona correctamente, pero cuando le doy a ejecutar introduzco el primer ...
  #1 (permalink)  
Antiguo 23/07/2010, 06:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
problema con wxDev-C++

Hola, me he descargado el wxDev-C++ y he hecho el siguiente ejercicio. Cuando lo compilofunciona correctamente, pero cuando le doy a ejecutar introduzco el primer número y a continuación me pone: El programa dejó de funcionar correctamente por un problema. Windows cerrará el programa y le notificará si existe una solución.

No me da ninguna solución, a qué puede ser debido esto. Gracias.

Este es el programa en cuestión:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.   int v[20];
  7.   int i;
  8.   int n_elementos=0;
  9.   char op = 's';
  10.  
  11.   while((op == 's') || (op == 'S') && (i<20)){
  12.         printf("Numero: ");
  13.         scanf("%d", &v[i]);
  14.         i++;
  15.         printf("otro? (s/n)");
  16.         scanf("%1s", &op);
  17.   }      
  18.   for(i=0; i<n_elementos; i++)
  19.       printf("\n%d", v[i]);
  20.  
  21. }
  #2 (permalink)  
Antiguo 23/07/2010, 06:52
Avatar de r0d
r0d
 
Fecha de Ingreso: noviembre-2007
Mensajes: 86
Antigüedad: 16 años, 5 meses
Puntos: 3
Respuesta: problema con wxDev-C++

Hola,

esto es un código C, y yo no conozco suficientemente el C para encontrar el error.
Pero he visto algo que no está bien:
no es i que tienes que utilizar dentro del bucle while, sino n_elementos (sino n_elementos se queda siempre a cero y luego, el bucle for no hara nada).

Luego, el main tiene que devolver algo (return 0; por ejemplo).

Hope it helps.
__________________
Alicia: Sólo quiero saber que camino debo tomar.
Gato risón: Pues... depende mucho de donde quieras ir.

Mi página web
  #3 (permalink)  
Antiguo 23/07/2010, 12:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 258
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: problema con wxDev-C++

Antes del for me he dejado la siguiente instrucción: n_elementos=i, pero me da el mismo mensaje.
Lo que no quiero es llenar todo el vector, por eso dentro del while pongo i<20, una vez haya salido del bucle como he inicializado n_elementos a 0, n_elementos valdrá i, es decir, el número de elementos que he introducido.

Última edición por minette1988; 23/07/2010 a las 13:02
  #4 (permalink)  
Antiguo 23/07/2010, 13:08
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años, 1 mes
Puntos: 228
Respuesta: problema con wxDev-C++

colocaste el return 0 ?? posiblemente windows detecta que se cerro mal.
  #5 (permalink)  
Antiguo 26/07/2010, 01:13
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: problema con wxDev-C++

Prueba esto:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int v[20];
  7.     int i;
  8.     int n_elementos=0;
  9.     char op = 's';
  10.  
  11.     while(((op == 's') || (op == 'S')) && (n_elementos<20))
  12.     {
  13.         printf("Numero: ");
  14.         scanf("%d", &v[n_elementos]);
  15.         fflush(stdin);
  16.         n_elementos++;
  17.         printf("Otro (s/n) ");
  18.         op = getchar();
  19.     }
  20.     for(i=0; i<n_elementos; i++)
  21.         printf("\n%d", v[i]);
  22. }

Creo que el problema lo tienes en que estás empleando la variable i antes de asignarle un valor. No debes dar por hecho que una variable declarada dentro del cuerpo de una función se inicie a cero. Estas variables se crean en la pila, y mientras no se les asigne algún valor tomarán el valor correspondiente a lo que hubiera antes en esas posiciones de memoria. En este caso, estabas empleando i como índice, y vete a saber dónde estabas escribiendo el valor leído, de ahí el error que te está dando.

Saludos,

Etiquetas: Ninguno
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 08:01.