Autor
|
Tema: Problema con programa. (Leído 3,329 veces)
|
Daniel Contreras
Desconectado
Mensajes: 4
|
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: case 2: printf ("> Elija el numero de su candidato< \n"); if(nc=1) { printf ("> Usted acaba de votar por Daniel Contreras! "); }else if(nc=2) { candidato2=candidato2+1; printf ("> Usted acaba de votar por Alejandro Marquez! <"); }else if(nc=3) { candidato3=candidato3+1; printf ("> Usted acaba de votar por Angelica Gutierrez! <"); }else if(nc=4) { candidato4=candidato4+1; printf ("> Usted acaba de votar por Maria Ribas! <"); }else if(nc=5) { candidato5=candidato5+1; printf ("> Usted acaba de votar por Angel Ramirez! <"); } printf ("Desea volver al menu anterior? (Utilice y=Si, n=No)"); scanf ("%s", mrespuesta ); break;
OJO: Las variables ya estan establecidas.. //#######################- Variables -##################################################### char candidato1, candidato2, candidato3, candidato4, candidato5; int nc; char mrespuesta, y, n; //#########################################################################################
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
|
solo de entrada 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
Mensajes: 4
|
Aqui está el código completo, en cuanto a lo que me dijiste.. Sigue tirando error. //#######################- Includes -###################################################### #include <stdio.h> #include <stdlib.h> #include <conio.h> //#######################- Definiciones -################################################## //#######################- Variables -##################################################### char candidato1, candidato2, candidato3, candidato4, candidato5; int nc; char mrespuesta, y, n; //######################################################################################### main() { int i=0, resp, num1,num2,opcion; printf("Bienvenido a las elecciones estudiantiles 2017.\n"); printf("Porfavor, escoja una opcion:\n"); printf("1- Informacion de los candidatos.\n"); printf("2- Votar por un candidato.\n"); switch(opcion) { case 1: printf ("########################################\n"); printf ("############~ Candidatos ~##############\n"); printf ("########################################\n"); printf ("### Nro 1. Daniel Contreras. ###\n"); printf ("### Cedula de Identidad: 26.298.220 ###\n"); printf ("### Edad: 19 ###\n"); printf ("########################################\n"); printf ("### Nro 2. Alejandro Marquez. ###\n"); printf ("### Cedula de Identidad: 25.834.309 ###\n"); printf ("### Edad: 21 ###\n"); printf ("########################################\n"); printf ("### Nro 3. Angelica Gutierrez. ###\n"); printf ("### Cedula de Identidad: 26.374.165 ###\n"); printf ("### Edad: 18 ###\n"); printf ("########################################\n"); printf ("### Nro 4. Maria Ribas. ###\n"); printf ("### Cedula de Identidad: 25.189.042 ###\n"); printf ("### Edad: 20 ###\n"); printf ("########################################\n"); printf ("### Nro 5. Angel Ramirez. ###\n"); printf ("### Cedula de Identidad: 25.540.329 ###\n"); printf ("### Edad: 17 ###\n"); printf ("########################################\n"); printf ("Presione cualquier boton para volver al menu anterior."); return main(); break; case 2: printf ("> Elija el numero de su candidato< \n"); if(nc==1) { candidato1 = candidato1 + 1; printf ("> Usted acaba de votar por Daniel Contreras! <"); }else if(nc==2) { candidato2 = candidato2 + 1; printf ("> Usted acaba de votar por Alejandro Marquez! <"); }else if(nc==3) { candidato3 = candidato3 + 1; printf ("> Usted acaba de votar por Angelica Gutierrez! <"); }else if(nc==4) { candidato4 = candidato4 + 1; printf ("> Usted acaba de votar por Maria Ribas! <"); }else if(nc==5) { candidato5 = candidato5 + 1; printf ("> Usted acaba de votar por Angel Ramirez! <"); } printf ("Desea volver al menu anterior? (Utilice y=Si, n=No)"); scanf ("%s", mrespuesta ); break; case 3: break; default: resp=0; } return 0; } // ~######### FUNCIONES #############~
|
|
« Última modificación: 31 Agosto 2017, 06:46 am por Daniel Contreras »
|
En línea
|
|
|
|
engel lex
|
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 int main()
esto return main();
no es un error pero es una mala practica...
linea 57
esto es lo que te está dando el error, debes pasarlo como referencia (&nc)
linea 85 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
Mensajes: 4
|
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é PD: Gracias de nuevo.
|
|
|
En línea
|
|
|
|
engel lex
|
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.
|
|
|
|
|
|