hola disculpen v: algun buen samaritano que me ayude, tengo este codigo que es para calcular el salario de un empleado segun las horas trabajadas y la cuota por hora pero si revaza las 40 horas se pagan horas dobles :,v
error: el error es que cuando me pide si quiero "DESEA CALCULAR EL SUELDO DE UN EMPLEADO (s/n)?" selecciono s (que deberia significar si) y no sucede nada, y si presiono n (que se supone que saldria del programa) me lo ejecuta pero no me respeta el system ("cls!); porfavor alguien que me ayude a correguirlo :,v lo agradeceria :D :silbar:
IMAGENES DE LOS ERRORES
si presiono s (si) (http://s33.postimg.org/4gt3rezen/Captura.png)
si presiono n (no) (http://s33.postimg.org/w1lxiogxr/Captura2.png)
y aqui el codigo enfermo :o
/*
*PROGRAMACION ESTRUCTURADA
*AUTOR: MENDEZ ACOSTA SEBASTIAN
*GRUPO: 2ABM
*TURNO: MATUTINO
*PRACTICA: SALARIO doble
*NO. 19.2
FECHA: 03/06/2016
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(int argc, char** argv)
//INICIO
{
//DECLARACION DE VARIABLES
char nombre[35];
int hrsTrab;
float cuotaHr, sueldosencillo, sueldodoble;
char regreso ;
//LIMPIAR PANTALLA
//clrscr();
printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°");
printf("\nDESEA CALCULAR EL SUELDO DE UN EMPLEADO (s/n)?");
scanf("%s",®reso);
while (regreso == 's' || regreso =='S' || regreso == 'SI' || regreso == 'Si' || regreso == 'si');
{
//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("NUMERO DE HORAS TRABAJADAS: ");
//LEER DATOS
scanf("%i",&hrsTrab);
//INTRODUCIR DATOS
printf("introduzca 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|EL SUELDO DEL EMPLEADO ES: %0.2f |",sueldosencillo);
printf("\n|--------------------------------------| ");
printf("\n\nGRACIAS POR EJECUTAR EL PROGRAMA :) ");
}
//CALCULAR UTILIZANDO IF
else
{
sueldodoble=(40*cuotaHr)+((hrsTrab-40)*(cuotaHr*2));
//SE MANDA A IMPRIMIR EL SUELDO DOBLE
printf("\n ______________________________________ ");
printf("\n| SUELDO DOBLE | ");
printf("\n|______________________________________| ");
printf("\n|EL NOMBRE DEL EMPLEADO ES: %s |",nombre);
printf("\n|______________________________________| ");
printf("\n|EL SUELDO DEL EMPLEADO ES: %0.2f |",sueldodoble);
printf("\n|______________________________________| ");
printf("\n\nGRACIAS POR EJECUTAR EL PROGRAMA :) ");
}
printf ("\nDESEA CALCULAR EL SUELDO DE OTRO EMPLEADO?");
scanf ("%s" ,®reso);
}
system("cls");
system ("color F0" );
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/WHILE °");
printf("\n° NO. 19.2 °");
printf("\n° FECHA: 03/06/2016 °");
printf("\n°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°");
getchar ();
getch();
return 0;
}
Hay cosas sin sentido como: regreso == 'SI' || regreso == 'Si' || regreso == 'si' (siendo que regreso es un char)
Cita de: HardForo en 5 Junio 2016, 01:24 AM
Hay cosas sin sentido como: regreso == 'SI' || regreso == 'Si' || regreso == 'si' (siendo que regreso es un char)
ya lo corregui lo deje asi
while (regreso == 's' );
pero aun asi no va :-X
Pides ayuda pero aun asi no lees en post anterior te conteste.
[
Cita de: 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.
Se tiene que leer la cadena con fgets.
char regreso[10];
///...
fgets(regreso,10,stdin);
}while(strncmp(regreso,"si",2)==0);
Tu código
scanf ("%s" ,®reso);
No va a funcionar por que regreso es caracter y no una cadena