Plantilla de un Menu de opciones usando do-while + switch
Descargar Menu_do_while_switch.c
Código
/* Twitter: @albertobsd email: alberto.bsd@gmail.com Buscame tambien en: web: https://programaciontrabajosescolares.blogspot.com/ e-mail: ProgramacionTrabajosEscolares@gmail.com facebook: https://www.facebook.com/ProgramacionTrabajosEscolares */ #include<stdio.h> #include<stdlib.h> int main() { int opcion; int entrar =1; char temp[10]; do { do{ }while(opcion < 0); switch(opcion) { case 1: break; case 2: break; case 3: break; case 4: entrar = 0; break; default: break; } }while(entrar == 1); //Se puede dejar como "}while(entrar);" return 0; }
Fuente: Plantilla de para Capturar Datos y Mostrarlos
Plantilla de para Capturar Datos y Mostrarlos
Usando estructura de datos y memoria dinámica para los datos almacenados.
Descarga plantilla_capturar_mostrar_datos.c
Código
/* Twitter: @albertobsd email: alberto.bsd@gmail.com Buscame tambien en: web: https://programaciontrabajosescolares.blogspot.com/ e-mail: ProgramacionTrabajosEscolares@gmail.com facebook: https://www.facebook.com/ProgramacionTrabajosEscolares */ #include<stdio.h> //Funciones printf, fgets #include<stdlib.h> //realloc #include<string.h> //strcspn #include<ctype.h> //tolower #define MAX_LEN_ALFANUMERICA_1 100 #define MAX_LEN_ALFANUMERICA_2 50 #define MAX_LEN_ALFANUMERICA_3 20 typedef struct plantilla_struct { char variable_alfanumerica_1[MAX_LEN_ALFANUMERICA_1]; char variable_alfanumerica_2[MAX_LEN_ALFANUMERICA_2]; char variable_alfanumerica_3[MAX_LEN_ALFANUMERICA_3]; int variable_entera_1; int variable_entera_2; int variable_entera_3; float variable_flotante_1; }TIPO; int funcion_ingreso_de_datos(); int funcion_imprimir_datos(); TIPO *tipos = NULL; int contador_tipos = 0; int main() { int opcion; int entrar =1; char temp[10]; do { do{ }while(opcion <= 0); //Mientras sea menor o igual que 0 switch(opcion) { case 1: funcion_ingreso_de_datos(); break; case 2: funcion_imprimir_datos(); break; case 3: entrar = 0; break; default: break; } }while(entrar == 1); //Se puede dejar como "}while(entrar);" return 0; } int funcion_ingreso_de_datos() { int opcion; int entrar =1,entrar_opcion_si_no; char temp[10]; do { tipos = realloc(tipos,(contador_tipos+1)*sizeof(struct plantilla_struct)); //Incrementamos el espacio para 1 Variable TIPO mas en el arreglo //Capturamos variable_alfanumerica_1 tipos[contador_tipos].variable_alfanumerica_1[strcspn(tipos[contador_tipos].variable_alfanumerica_1,"\n\r")] = '\0'; //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena //Capturamos variable_alfanumerica_2 tipos[contador_tipos].variable_alfanumerica_2[strcspn(tipos[contador_tipos].variable_alfanumerica_2,"\n\r")] = '\0'; //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena //Capturamos variable_alfanumerica_3 tipos[contador_tipos].variable_alfanumerica_3[strcspn(tipos[contador_tipos].variable_alfanumerica_3,"\n\r")] = '\0'; //Reemplazamos los retornos de linea con caracrer nulo, terminador de cadena //Capturamos variable_entera_1 do { }while(tipos[contador_tipos].variable_entera_1 <= 0); // Salimos del DO solo si el valore leido es mayor o igual a 1 //Capturamos variable_entera_2 do { }while(tipos[contador_tipos].variable_entera_2 < 0); // Salimos del DO solo si el valore leido es mayor o igual a 0 //Capturamos variable_entera_3 do { }while(tipos[contador_tipos].variable_entera_3 >= 0); // Salimos del DO solo si el valor leido es negativo //Capturamos variable_flotante_1 do { tipos[contador_tipos].variable_flotante_1 = strtof(temp,NULL); }while(tipos[contador_tipos].variable_flotante_1 == 0.0); // Salimos del DO solo si el valor leido distinto de 0 entrar_opcion_si_no = 1; do{ case 's': entrar_opcion_si_no = 0; break; case 'n': entrar_opcion_si_no = 0; entrar = 0; // Se cambia la variable para salir del menu principal break; default: break; } }while(entrar_opcion_si_no == 1); contador_tipos++; //Aqui incrementamos el contador_tipos que indica cuantos valores completos tenemos de la estructura plantilla_struct }while(entrar == 1); //Se puede dejar como "}while(entrar);" } int funcion_imprimir_datos() { //Imprimir los datos no tiene mucho sentido, solo hay que recorrer correctamente la cantidad de registros previamente capturados int i = 0; while(i < contador_tipos) { i++; } }