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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con programa.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con programa.  (Leído 3,329 veces)
Daniel Contreras

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Problema con programa.
« en: 30 Agosto 2017, 23:50 pm »

Buenas, vengo aquí para plantearles mi situación..

Estoy realizando una simulación de elecciones escolares, donde 5 estudiantes aspiran a ser elegidos por sus compañeros, la cosa es que intento hacer un menú donde me muestre 3 opciones, Ver los candidatos, votar y salir.. La primera y la tercera opcion me van de bien, pero la segunda al elegir el candidato me tira el siguiente error:


El código donde da el error es este:

Código
  1. case 2:      
  2.      printf ("> Elija el numero de su candidato< \n");
  3.      scanf ("%d", nc);
  4.  
  5.      if(nc=1)
  6.      {
  7.             printf ("> Usted acaba de votar por Daniel Contreras! ");
  8.           }else
  9.      if(nc=2)
  10.      {
  11.           candidato2=candidato2+1;
  12.             printf ("> Usted acaba de votar por Alejandro Marquez! <");
  13.           }else
  14.      if(nc=3)
  15.      {
  16.           candidato3=candidato3+1;
  17.             printf ("> Usted acaba de votar por Angelica Gutierrez! <");
  18.           }else
  19.      if(nc=4)
  20.      {
  21.           candidato4=candidato4+1;
  22.             printf ("> Usted acaba de votar por Maria Ribas! <");
  23.           }else
  24.      if(nc=5)
  25.      {
  26.           candidato5=candidato5+1;
  27.             printf ("> Usted acaba de votar por Angel Ramirez! <");
  28.           }
  29.      printf ("Desea volver al menu anterior? (Utilice y=Si, n=No)");
  30.      scanf ("%s", mrespuesta);
  31.  
  32.  
  33. getch();
  34.  break;

OJO: Las variables ya estan establecidas..

Código
  1. //#######################- Variables -#####################################################
  2. char candidato1, candidato2, candidato3, candidato4, candidato5;
  3.      int nc;
  4.      char mrespuesta, y, n;
  5. //#########################################################################################

Si necesitan el código completo, avisarme pls.


« Última modificación: 31 Agosto 2017, 00:25 am por Daniel Contreras » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con programa.
« Respuesta #1 en: 31 Agosto 2017, 04:30 am »

solo de entrada
Código
  1. if(nc=1)

es == para comparar, = es para asignar, allí está pasando que a nc se le asigna 1 y retorna 1


de resto no veo donde estás desbordando memoria, probablemente es en algún otro lugar del codigo... te recomiendo usar el debugger de tu ide para buscar con más precisión


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Daniel Contreras

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema con programa.
« Respuesta #2 en: 31 Agosto 2017, 06:44 am »

Aqui está el código completo, en cuanto a lo que me dijiste.. Sigue tirando error.

Código
  1. //#######################- Includes -######################################################
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. //#######################- Definiciones -##################################################
  6.  
  7. //#######################- Variables -#####################################################
  8. char candidato1, candidato2, candidato3, candidato4, candidato5;
  9.      int nc;
  10.      char mrespuesta, y, n;
  11. //#########################################################################################
  12. main()
  13. {
  14.      system ("cls");
  15.    int i=0, resp, num1,num2,opcion;
  16. printf("Bienvenido a las elecciones estudiantiles 2017.\n");
  17. printf("Porfavor, escoja una opcion:\n");
  18. printf("1- Informacion de los candidatos.\n");
  19. printf("2- Votar por un candidato.\n");
  20. printf("3- Salir.\n");
  21. printf("Opcion: ");
  22. scanf("%d",&opcion);
  23. switch(opcion)
  24. {
  25. case 1:
  26.      system ("cls");
  27.      printf ("########################################\n");
  28.      printf ("############~ Candidatos ~##############\n");
  29.      printf ("########################################\n");
  30.      printf ("###      Nro 1. Daniel Contreras.    ###\n");
  31.      printf ("### Cedula de Identidad: 26.298.220  ###\n");
  32.      printf ("###             Edad: 19             ###\n");
  33.      printf ("########################################\n");
  34.      printf ("###      Nro 2. Alejandro Marquez.   ###\n");
  35.      printf ("### Cedula de Identidad: 25.834.309  ###\n");
  36.      printf ("###             Edad: 21             ###\n");
  37.      printf ("########################################\n");
  38.      printf ("###    Nro 3. Angelica Gutierrez.    ###\n");
  39.      printf ("### Cedula de Identidad: 26.374.165  ###\n");
  40.      printf ("###             Edad: 18             ###\n");
  41.      printf ("########################################\n");      
  42.      printf ("###        Nro 4. Maria Ribas.       ###\n");
  43.      printf ("### Cedula de Identidad: 25.189.042  ###\n");
  44.      printf ("###             Edad: 20             ###\n");
  45.      printf ("########################################\n");          
  46.      printf ("###       Nro 5. Angel Ramirez.      ###\n");
  47.      printf ("### Cedula de Identidad: 25.540.329  ###\n");
  48.      printf ("###             Edad: 17             ###\n");
  49.      printf ("########################################\n");
  50.      printf ("Presione cualquier boton para volver al menu anterior.");
  51. getch();
  52.    return main();
  53.  break;
  54.  
  55. case 2:      
  56.      printf ("> Elija el numero de su candidato< \n");
  57.      scanf ("%d", nc);
  58.  
  59.      if(nc==1)
  60.      {
  61.             candidato1 = candidato1 + 1;
  62.             printf ("> Usted acaba de votar por Daniel Contreras! <");
  63.           }else
  64.      if(nc==2)
  65.      {
  66.           candidato2 = candidato2 + 1;
  67.             printf ("> Usted acaba de votar por Alejandro Marquez! <");
  68.           }else
  69.      if(nc==3)
  70.      {
  71.           candidato3 = candidato3 + 1;
  72.             printf ("> Usted acaba de votar por Angelica Gutierrez! <");
  73.           }else
  74.      if(nc==4)
  75.      {
  76.           candidato4 = candidato4 + 1;
  77.             printf ("> Usted acaba de votar por Maria Ribas! <");
  78.           }else
  79.      if(nc==5)
  80.      {
  81.           candidato5 = candidato5 + 1;
  82.             printf ("> Usted acaba de votar por Angel Ramirez! <");
  83.           }
  84.      printf ("Desea volver al menu anterior? (Utilice y=Si, n=No)");
  85.      scanf ("%s", mrespuesta);
  86.  
  87.  
  88. getch();
  89.  break;
  90. case 3:
  91.  break;
  92. default:
  93.  resp=0;
  94. }
  95.  
  96.  return 0;
  97. }
  98.  
  99. // ~######### FUNCIONES #############~
  100.  
  101.  
  102.  
« Última modificación: 31 Agosto 2017, 06:46 am por Daniel Contreras » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con programa.
« Respuesta #3 en: 31 Agosto 2017, 06:55 am »

tienes un lote de errores, no se ni si quiera como te deja compilar (debes estar en Dev C o algo así que pasa todos los errores)

primero man debe ser siempre de tipo int
Código
  1. int main()


esto
Código
  1. return main();

no es un error pero es una mala practica...


linea 57
Código
  1. scanf ("%d", nc);
esto es lo que te está dando el error, debes pasarlo como referencia (&nc)


linea 85
Código
  1. scanf ("%s", mrespuesta);
esto también dará error,  mrespuesta es tipo char, y el espera que sea de tipo char*, estás intentando meter una cadena en el espacio de un caracter individual... si es un solo caracter debe pasarse por referencia, si es un apuntador no


sobre los candidatos los tienes como tipo char, las operaciones matemáticas pasarán correctamente porque las letras a bajo nivel son numeros, pero a menos que estés claro en que haces, no es el uso correcto, por otro lado sería más apropiado declararlo como un solo array en lugar de 5 variables


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Daniel Contreras

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema con programa.
« Respuesta #4 en: 31 Agosto 2017, 07:37 am »

Gracias!, ya logre hacer que corra..

Tengo 2 preguntas antes de concluir.

¿Porque el return main(); lo consideras una mala práctica?

¿Que compilador me recomiendas para evitar estos tipos de errores? (Si, es DEV-C++)

En cuanto a las variables, ya las arreglé  :D

PD: Gracias de nuevo.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Problema con programa.
« Respuesta #5 en: 31 Agosto 2017, 07:40 am »

ahorita no recuerdo que compilador usa Dev, creo que el de microsoft, pero personalmente y usaba (cuando estaba con windows) minGW y como ide usaba netbeans (puedes buscar como instalar netbeans con mingw)

lo del return main, porque cada vez que entras se llama recursivamente la función, y esto va a un stack de operaciones, no sabes que tantas veces se haga ni que tan grande es el stack y si este se desborda, el programa crashea intentando volver... por eso no es recomendada la programación recursiva y se recomienda la iterativa

En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Daniel Contreras

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Problema con programa.
« Respuesta #6 en: 31 Agosto 2017, 08:03 am »

Gracias!.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema, con programa->HELP PLZ « 1 2 »
Programación Visual Basic
newbY 12 4,946 Último mensaje 22 Noviembre 2006, 18:15 pm
por newbY
Problema programa VB
Programación Visual Basic
34Gl3 S1lV3R 2 2,314 Último mensaje 31 Enero 2008, 16:47 pm
por Chefito
Problema con un programa
Ingeniería Inversa
azazael 8 4,152 Último mensaje 4 Julio 2008, 10:23 am
por apuromafo CLS
Problema en mi programa (PIC)
Electrónica
laluchi 5 4,783 Último mensaje 30 Octubre 2008, 20:01 pm
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines