Título: ayuda xd regresar al menu con do while dev c++!!1
Publicado por: el1000erroresxd en 4 Junio 2016, 04:47 am
necesito ayuda con mi codigo :,v me compila y todo, la primera corrida sale sin errores sin embargo al calcular otro sueldo empiezan los errores me salta la opcion de introducir el nombre del empleado y en capturar las horas trabajadas al imprimirlas me sale el codigo ascii es decir si pongo 10 horas me muestra una "i" :-\ ayuda porfavor alguien me dice como arreglarlo? menu- (http://s33.postimg.org/dngtq925r/Captura.png) primera corrida- (http://s33.postimg.org/7t1fa0e27/Captura3.png) 2 corrida (error) - (http://s33.postimg.org/cxhi0f3u7/Captura2.png) el codigo /* *PROGRAMACION ESTRUCTURADA *AUTOR: MENDEZ ACOSTA SEBASTIAN *GRUPO: 2ABM *TURNO: MATUTINO *PRACTICA: SALARIO SENCILLO *NO. 19.1 FECHA: 03/06/2016 */
#include <stdio.h> #include <conio.h> #include <stdlib.h>
int main() //INICIO { //DECLARACION DE VARIABLES char nombre[35]; int hrsTrab; float cuotaHr, sueldosencillo; int fin = 0; int opcion; char regreso;
//LIMPIAR PANTALLA //clrscr(); while (fin == 0) { system("cls"); system ("color F2" ); printf("\t------------------------------------------------------\n"); printf("\t|PROGRAMA PARA CALCULAR EL SUENDO DE UN EMPLEADO |\n"); printf("\t------------------------------------------------------\n"); printf(" °°°°°°°°°°°°°°°°°°°°°"); printf("\n °1) INICIAR PROGRAMA°\n"); printf(" °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); printf("\n °2) BLOQUE DE IDENTIFICACION °\n"); printf(" °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); printf("\n °3) salir °\n"); printf(" °°°°°°°°°°°"); printf("\n °QUE ACCION DESEA REALIZAR?:°\n"); printf(" °°°°°°°°°°°°°°°°°°°°°°°°°°°°°\n\n\n"); printf ("ingrese un numero del menu:"); scanf("%i", &opcion); switch(opcion) { do{system("cls"); case 1: system("cls"); //TITULO printf("\t\t***********************************************"); printf("\n\t\tPROGRAMA PARA CALCULAR EL SUELDO DE UN EMPLEADO"); printf("\n\t\t***********************************************");
//INTRODUCIR DATOS printf("\n\n\nNOMBRE DEL EMPLEADO: "); //LEER DATOS scanf("%s",&nombre); //INTRODUCIR DATOS printf("\nNUMERO DE HORAS TRABAJADAS: "); //LEER DATOS scanf("%i",&hrsTrab); //INTRODUCIR DATOS printf("\nINTRODUSCA LA CUOTA POR HORA: "); //LEER DATOS scanf("%f",&cuotaHr);
//CALCULAR UTILIZANDO IF if(hrsTrab<=40) { sueldosencillo=hrsTrab*cuotaHr; //SE MANDA A IMPRIMIR EL SUELDO SENCILLO printf("\n|--------------------------------------| "); printf("\n| SUELDO SENCILLO | "); printf("\n|--------------------------------------| "); printf("\n|EL NOMBRE DEL EMPLEADO ES: %s |",nombre); printf("\n|--------------------------------------| "); printf("\n|LAS HORAS TRABAJADAS FUERON: %i |",hrsTrab); printf("\n|--------------------------------------| "); printf("\n|EL SUELDO DEL EMPLEADO ES: %0.2f |",sueldosencillo); printf("\n|--------------------------------------| "); }
//FIN printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); printf("\n°DESEA CALCULAR EL SUELDO DE OTRO EMPLEADO (SI/NO)?"); scanf("%c",®reso); getchar (); }while(regreso == 'si'); //}while (regreso == 's' || regreso =='S' || regreso == 'SI' || regreso == 'Si' || regreso == 'si'); break; case 2: system("cls"); system ("color F8" ); printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); printf("\n° PROGRAMACION ESTRUCTURADA °"); printf("\n° AUTOR: MENDEZ ACOSTA SEBASTIAN °"); printf("\n° GRUPO: 2ABM °"); printf("\n° TURNO: MATUTINO °"); printf("\n° PRACTICA: SALARIO SENCILLO °"); printf("\n° NO. 19.2 °"); printf("\n° FECHA: 03/06/2016 °"); printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); getchar (); fin = 1; break; case 3: system("cls"); system ("color F8" ); printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); printf("\n°PRESIONAR CUALQUIER <TECLA> PARA CONTINUAR...°"); printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°"); getchar (); fin = 1; break; default: system("cls"); system ("color F2" ); printf ("\t\t\t=================\n"); printf ("\t\t\topcion no valida\n"); printf ("\t\t\t=================\n\n\n\n"); fin = 1; fin = 0; fin++; break; getchar (); return 0; } } }
:( :( :( :( :( :( :( :( :( :(
Título: Re: ayuda xd regresar al menu con do while dev c++!!1
Publicado por: el1000erroresxd en 4 Junio 2016, 05:33 am
ayudaaaaaaaaaaaaaaaaaaaaaaaa D::::::
Título: Re: ayuda xd regresar al menu con do while dev c++!!1
Publicado por: tincopasan en 4 Junio 2016, 08:48 am
2 cosas: 1)no creas que todos los integrantes de la lista están aquí solo para ayudarte a tí (aprende a tener paciencia, y a soportar la frustración, quizá hasta no te contesten alguna vez) 2) ¿intentaste vaciando el buffer? después de cada scanf de los datos con la sentencia:
Título: Re: ayuda xd regresar al menu con do while dev c++!!1
Publicado por: AlbertoBSD en 4 Junio 2016, 09:12 am
La variable regreso es carácter no Cadena nunca va a ser igual a "si", ademas no se pueden comparar cadenas con == se necesita strcmp o strncmp. }while(regreso == 'si');
y sobre lo de fflush esta indefinido para stdin funciona en algunos compiladores y sistemas pero no en todos, por lo cual no hay que recomendarlo tanto Se tiene que leer la cadena con fgets. char regreso[10]; ///... }while(strncmp(regreso ,"si",2)==0);
Tambien lo que comentas deo nombre. Necesitas reinicializar la variable nombre y todas las demas en cada ciclo. Iguala los enteros a 0 y las cadenas limpialas con memset
Y como te comente antes lee las cadenas con fgets. ese i que te aparece es el i del "si" como solo lees un caracter con getchar.. el "ese" queda en "regresar" y el i pasa inmediatamente al nombre... repito esto no pasaria si les con fgets.. incluso puedes leer los numeros con fgets a un.buffer temportal y despues transformarlos a entero con atoi o con sscanf. Saludo
Título: Re: ayuda xd regresar al menu con do while dev c++!!1
Publicado por: el1000erroresxd en 5 Junio 2016, 01:24 am
gracias a todos ya pude resolverlo el problema era que tenia algunas variables char como %s y mas abajo del codigo la tenia como %c las puse todas como %s y funciono graciasss! ;D ;D ;D ;D ;D :rolleyes: :rolleyes: :rolleyes: ;-) ;-)
|