Autor
|
Tema: ¿AYUDA por que este programa crashea? (Leído 2,382 veces)
|
Mozzard
Desconectado
Mensajes: 31
cout << "Text here" << endl;
|
Es un trabajillo para el insti por si veis alguna parte inecesaria o forzada, la cosa es pone nota a cada alumno y guardar la nota de estos en un array: Ej: El alumno 1 tiene la nota 9. Pero al poner nota al 3r alumno me crashea, alguien sabe por que? Ni mi profe sabe que pasa no estoy de broma lol. #include <stdio.h> #include <stdlib.h> int comparador(int n ){ if(n<=15 and n>0){ return n; }else{ printf("NUMERO INCORRECTO!\n"); return 0; } } int main(){ printf("Cuantos alumnos hay? MAX 15 MIN 1: "); int num, v,i=0; scanf("%i", &num); v=num; int array[v]; if(comparador(num) != 0){ for(i;i<=v;i++){ printf("Que nota ha sacado el alumno %i ?", i+1); scanf("%i", array[i]); } for (i=0;i<=v;i++){ printf("El alumno %i ha sacado %i", i+1, array[i]); } } }
|
|
« Última modificación: 6 Octubre 2018, 01:32 am por simorg »
|
En línea
|
Programalo... sin miedo...
|
|
|
OmarHack
Desconectado
Mensajes: 1.268
|
Haces overflow. Por culpa de scanf (&num)
No programo en C así que no sé indicarte la solución, busca en google.
|
|
« Última modificación: 5 Octubre 2018, 19:49 pm por OmarHack »
|
En línea
|
I like to test things.
|
|
|
Mozzard
Desconectado
Mensajes: 31
cout << "Text here" << endl;
|
Segun he visto overflow es que le metemos a la variable un valor mas alto del que puede, pero metemos como mucho 15, no deberia de dar error no?
|
|
|
En línea
|
Programalo... sin miedo...
|
|
|
OmarHack
Desconectado
Mensajes: 1.268
|
&num no te da el valor de num. Lo que te da es la dirección de memoria en donde se guarda num. La dirección de memoria es algo del tipo: 0x6fabcb73b484 En todo caso usa scanf("%s",num)
Cual es tu intención con scanf &sum? No programo en C asique puede que lo que estoy diciendo no se aplique a C pero en C++ eso sería intentar sobrescribir la dirección de memoria en la que se almacena la variable por un numero que de el usuario. Lo cual no tiene sentido en este tipo de programas.
|
|
|
En línea
|
I like to test things.
|
|
|
Mozzard
Desconectado
Mensajes: 31
cout << "Text here" << endl;
|
&num en scanf es poner el valor que introducimos en la direccion de memoria de num, por eso se pone &, ya entra en la sintaxi
|
|
|
En línea
|
Programalo... sin miedo...
|
|
|
MAFUS
Desconectado
Mensajes: 1.603
|
No se puede dimensionar un array con una variable. Para eso está malloc y similares.
Si tú array tiene 15 elementos lo recorres desde 0 hasta 14, si llegas al 15 te has pasado.
|
|
|
En línea
|
|
|
|
OmarHack
Desconectado
Mensajes: 1.268
|
Ya, pero parece que estas escribiendo en el propio puntero. No te lo puedo asegurar. Si lo que pienso es cierto... Prueba así a ver si no te crashea. int i=0; int *num=&i; scanf("%d", num);
|
|
|
En línea
|
I like to test things.
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Simples errores de sintaxis, pero la logica esta bien #include <stdio.h> #include <stdlib.h> int comparador(int n ){ if(n>0 and n<=15){ return n; }else{ printf("NUMERO INCORRECTO!\n"); return 0; } } int main(){ int num, v,i; printf("Cuantos alumnos hay? MAX 15 MIN 1: "); scanf("%i", &num); v=num; int array[v]; if(comparador(num) != 0){ for(i=0;i<v;i++){ printf("Que nota ha sacado el alumno %d?:", i+1); scanf("%d",&array[i]); } for (i=0;i<v;i++){ printf("El alumno %i ha sacado %i\n",i+1, array[i]); } } }
|
|
|
En línea
|
7w7
|
|
|
Mozzard
Desconectado
Mensajes: 31
cout << "Text here" << endl;
|
Ya he visto que has cambiado i<=v por i<v y el %d, por aprender y no volver a fallar me podrias decir por que pls? El programa funciona perfectament ahora gracias!
|
|
|
En línea
|
Programalo... sin miedo...
|
|
|
Beginner Web
Desconectado
Mensajes: 634
youtu.be/0YhflLRE-DA
|
Porque en C/C++ la primera posicion inicial de un arreglo/vector es 0, Por ejemplo si declaras un arreglo de 4 elementos , este contendra elementos desde la osicion 0 a la 3 solamente, es decir las posiciones 0,1,2 y 3
|
|
|
En línea
|
7w7
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Me crashea el programa
« 1 2 »
Programación C/C++
|
jaxoR
|
16
|
7,327
|
14 Marzo 2014, 07:02 am
por leosansan
|
|
|
Me crashea el programa
Programación C/C++
|
jaxoR
|
2
|
2,425
|
30 Mayo 2014, 02:42 am
por Yoel Alejandro
|
|
|
(Ayuda) Programa crashea al analizar una cadena (char *)
« 1 2 »
Programación C/C++
|
Seyro97
|
14
|
6,157
|
27 Mayo 2015, 09:18 am
por Eternal Idol
|
|
|
(Ayuda) La función wglMakeCurrent(NULL, NULL) crashea el programa a veces
Programación C/C++
|
Seyro97
|
1
|
2,126
|
10 Junio 2015, 15:34 pm
por Eternal Idol
|
|
|
(Ayuda) Programa crashea al acceder al último término de una matriz
Programación C/C++
|
Seyro97
|
1
|
1,716
|
2 Octubre 2015, 08:11 am
por Seyro97
|
|