ayuda con ciclo while!

Iniciado por el1000erroresxd, 5 Junio 2016, 01:20 AM

0 Miembros y 1 Visitante están viendo este tema.

el1000erroresxd

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)
si presiono n (no)



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",&regreso);
 
 
 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" ,&regreso);
   
   
}


   
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;

}

HardForo

Hay cosas sin sentido como: regreso == 'SI' || regreso == 'Si' || regreso == 'si' (siendo que regreso es un char)
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

el1000erroresxd

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

AlbertoBSD

#3
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" ,&regreso);

No va a funcionar por que regreso es caracter y no una cadena
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW