[ Foro de C ]
tengo que crear un menú con diferentes opciones, y aparece, pero el switch no funciona, después de que aparece el menú, se termina el programa, este es mi código:
#include<stdlib.h>
#include<stdio.h>
int main ()
{
int calif, opc;
printf("\nMenu de opciones\n");
printf("\n1)Leer calificaciones\n");
printf("\n2)Mostrar indicadores\n");
printf("\n3)Salir\n");
printf("\nEscoja una opcion\n");
scanf("%d, & opc");
//leer
switch (calif)
{
case 1:
{
printf("\ncalificacion alumno 1: 10. 8. 9");
printf("\ncalificacion alumno 2: 9. 8. 9");
printf("\ncalificacion alumno 3: 5. 8. 7");
printf("\ncalificacion alumno 4: 10. 8. 5");
printf("\ncalificacion alumno 5: 8. 4. 6");
printf("\ncalificacion alumno 6: 8. 8. 9");
printf("\ncalificacion alumno 7: 3. 9. 9");
printf("\ncalificacion alumno 8: 7. 8. 6");
printf("\ncalificacion alumno 9: 7. 4. 9");
printf("\ncalificacion alumno 10: 8. 8. 8");
}
break;
case 2:{
if (calif >5)
printf("\n Alumnos aprobados\n");
break;
}
case 3:{
if (calif <5)
printf("\n Alumnos reprobados\n");
break;
}
}
system("pause");
}
No entiendo la lógica que estás aplicando y tienes varios errores, pero el más importante es: la variable "calif", que usas como control del "switch", no tiene valor.
hola migue
claramente tienes el programa solo comenzado
ahí te falta recibir las calificaciones de los alumnos
en un array o en su defecto tener el array ya
inicializado, por eso se ve todo raro
por ej
- repetir un montón de veces el printf en el caso 1
cuando lo lógico es hacer un printf en un for
- creo que los ifs deberían ir juntos en el caso 2
para separa aprobados y suspendidos
- todo esto debería estar en un bucle infinito del
que se salga cuando se elija la opción salir
errores:
- el scanf esta mal formateado (")
- después de scanf es interesante limpiar
el bufer por ej con setbuf
- el switch depende de opc y no de calif
- tal como se ve le falta tabular el código
- el argumento del main si no lo usas es
preferiblemente void
- la llamada al sistema evítala si puedes,
en este caso con un getchar te la evitas
y te evitas también la librería stdlib
- el main devuelve un int, que tu no le das,
falta el return 0
mi consejo es que te pongas con los arrays
para que cuando acabes no tengas que
rehacer todo el código
cualquier duda pasa por aquí
suerte ;-)
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)