Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: el1000erroresxd en 5 Junio 2016, 01:20 am



Título: ayuda con ciclo while!
Publicado por: el1000erroresxd en 5 Junio 2016, 01:20 am
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

Código:
/*
*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;

}


Título: Re: ayuda con ciclo while!
Publicado por: 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)


Título: Re: ayuda con ciclo while!
Publicado por: el1000erroresxd en 5 Junio 2016, 01:26 am
Hay cosas sin sentido como: regreso == 'SI' || regreso == 'Si' || regreso == 'si' (siendo que regreso es un char)


ya lo corregui lo deje asi
Código:
while (regreso == 's' );
pero aun asi no va  :-X


Título: Re: ayuda con ciclo while!
Publicado por: AlbertoBSD en 5 Junio 2016, 03:37 am
Pides ayuda pero aun asi no lees en post anterior te conteste.

[
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.

Código
  1. char regreso[10];
  2. ///...
  3.  fgets(regreso,10,stdin);
  4. }while(strncmp(regreso,"si",2)==0);



Tu código

Código
  1. scanf ("%s" ,&regreso);

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