elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿AYUDA por que este programa crashea?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿AYUDA por que este programa crashea?  (Leído 2,382 veces)
Mozzard

Desconectado Desconectado

Mensajes: 31


cout << "Text here" << endl;


Ver Perfil
¿AYUDA por que este programa crashea?
« en: 5 Octubre 2018, 19:33 pm »

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.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int comparador(int n ){
  4. if(n<=15 and n>0){
  5. return n;
  6. }else{
  7. printf("NUMERO INCORRECTO!\n");
  8. return 0;
  9. }
  10. }
  11.  
  12.  
  13.  
  14. int main(){
  15. printf("Cuantos alumnos hay? MAX 15 MIN 1: ");
  16. int num, v,i=0;
  17. scanf("%i", &num);
  18. v=num;
  19. int array[v];
  20. if(comparador(num) != 0){
  21. for(i;i<=v;i++){
  22. printf("Que nota ha sacado el alumno %i ?", i+1);
  23. scanf("%i", array[i]);
  24. }
  25. for (i=0;i<=v;i++){
  26. printf("El alumno %i ha sacado %i", i+1, array[i]);
  27. }
  28. }
  29. }
  30.  


« Última modificación: 6 Octubre 2018, 01:32 am por simorg » En línea

Código:
Programalo... sin miedo...
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #1 en: 5 Octubre 2018, 19:46 pm »

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 Desconectado

Mensajes: 31


cout << "Text here" << endl;


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #2 en: 5 Octubre 2018, 22:33 pm »

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

Código:
Programalo... sin miedo...
OmarHack


Desconectado Desconectado

Mensajes: 1.268


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #3 en: 5 Octubre 2018, 23:07 pm »

&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 Desconectado

Mensajes: 31


cout << "Text here" << endl;


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #4 en: 5 Octubre 2018, 23:11 pm »

&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

Código:
Programalo... sin miedo...
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #5 en: 5 Octubre 2018, 23:21 pm »

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 Desconectado

Mensajes: 1.268


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #6 en: 5 Octubre 2018, 23:29 pm »

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 Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #7 en: 5 Octubre 2018, 23:57 pm »

Simples errores de sintaxis, pero la logica esta bien
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int comparador(int n ){
  4. if(n>0 and n<=15){
  5.  return n;
  6. }else{
  7.  printf("NUMERO INCORRECTO!\n");
  8.  return 0;
  9. }
  10. }
  11.  
  12. int main(){
  13. int num, v,i;
  14. printf("Cuantos alumnos hay? MAX 15 MIN 1: ");
  15. scanf("%i", &num);
  16. v=num;
  17. int array[v];
  18. if(comparador(num) != 0){
  19.  for(i=0;i<v;i++){
  20.   printf("Que nota ha sacado el alumno %d?:", i+1);
  21. scanf("%d",&array[i]);
  22.  }
  23.  for (i=0;i<v;i++){
  24.  printf("El alumno %i ha sacado %i\n",i+1, array[i]);
  25.  }
  26. }
  27. }
En línea

7w7
Mozzard

Desconectado Desconectado

Mensajes: 31


cout << "Text here" << endl;


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #8 en: 6 Octubre 2018, 10:28 am »

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

Código:
Programalo... sin miedo...
Beginner Web


Desconectado Desconectado

Mensajes: 634


youtu.be/0YhflLRE-DA


Ver Perfil
Re: ¿AYUDA por que este programa crashea?
« Respuesta #9 en: 6 Octubre 2018, 10:50 am »

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
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Me crashea el programa « 1 2 »
Programación C/C++
jaxoR 16 7,327 Último mensaje 14 Marzo 2014, 07:02 am
por leosansan
Me crashea el programa
Programación C/C++
jaxoR 2 2,425 Último mensaje 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 Último mensaje 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 Último mensaje 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 Último mensaje 2 Octubre 2015, 08:11 am
por Seyro97
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines