[ Foro de C ]

Ayuda

16-Mar-2021 04:22
Invitado (Migue)
2 Respuestas

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");

}


16-Mar-2021 07:50
Nacho Cabanes (+77)

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.


16-Mar-2021 11:19
Invitado (indi)

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.)