Estoy haciendo esto como parte de un proyecto escolar y estoy muy perdido y esto es solo el comienzo. Nuestro profesor quiere que tengamos 4 funciones de menú. Cada menú tiene opciones para acceder a otras funciones dentro del programa. Primero, se nos pide que tengamos el estado del programa si queremos iniciarlo o salir. Eso no es un problema. Mi problema es que cuando ejecuto la función del menú principal y selecciono una opción, no puedo obtener mi elección para volver a principal para ejecutar el cambio de caso para acceder a los otros menús. En este momento tengo todos los demás menús que dicen "próximamente..." solo para saber que lo estoy haciendo bien. Agregaré más una vez que pase esta parte. Esta es mi primera publicación aquí, así que me disculpo si es mucho código para publicar. Agradezco mucho cualquier ayuda. Gracias.
#include <stdio.h> #include <stdlib.h> int main() { //declare all working variables: mOption, FManOption, COption...etc... int MOption = 0; int FManOption = 0; int FOption = 0; int COption = 0; int userChoice = 0; int n = mainMenu(); switch(n) { case 1: while(FManOption != 3) { FManOption = FishermanMenu(); switch(FManOption) { case 1: //get a fisherman //count fisherman break; case 2: //prompt for a ssn, validate, search //if found display everything about this fisherman break; case 3: //hit any key to go back to main menu //reset FManOption break; default: "error!"; }//end switch(FManOption) }//end while(FManOption != 3) break; default: printf("error"); } return 0; } int mainMenu() { int option = 0; printf("-------Welcome to the Fishing Tournament Main Menu!-------\n\n"); do { printf("1 - Fisherman menu\n"); printf("2 - Fish menu\n"); printf("3 - Tournament(Catch) menu\n"); printf("4 - Close Tournament (determine winner)\n"); printf("5 - Quit Program\n\n"); printf("Please select a menu option: "); if (scanf("%d", &option) != 1) /* check scanf() return value for input errors */ { /* handle input error */ return -1; } } while (option < 1 || option > 5); /* check the range of option ( 1 - 5) */ return option; /* finally return the final correct option */ } int FishermanMenu() { printf("Coming soon..."); /* -1-Register fisherman -2-Search fisherman -3-Go back to main menu */ //FManOption }//end Fisherman MenuSu función mainMenu() no devuelve nada más que 0 , además ignora el valor devuelto en main, cuando llama a mainMenu(); (esto ni siquiera debería compilar por cierto), esto es probablemente lo que está buscando,
int mainMenu(void) { int option = 0; printf("-------Welcome to the Fishing Tournament Main Menu!-------\n\n"); do { printf("1 - Fisherman menu\n"); printf("2 - Fish menu\n"); printf("3 - Tournament(Catch) menu\n"); printf("4 - Close Tournament (determine winner)\n"); printf("5 - Quit Program\n\n"); printf("Please select a menu option: "); if (scanf("%d", &option) != 1) /* check scanf() return value for input errors */ { /* handle input error */ return -1; } } while (option < 1 || option > 5); /* check the range of option ( 1 - 5) */ return option; /* finally return the final correct option */ } int main(void) { int n = mainMenu(); /* save the result to n */ /* your code */ return 0; }