30/01/2015, 12:46
|
Usuario no validado | | Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 16 años Puntos: 5 | |
Problema con programa: estoy usando mal el char ó los IF, ELSE?
Código:
#include <stdio.h>
#include <stdlib.h>
/*
Los empleados de una fábrica trabajan en dos turnos, diurno y nocturno. Se desea calcular el salario de un día de trabajo atendiendo a:
• La tarifa horaria diurna es $5.00.
• La tarifa horaria nocturna es $8.00.
• Caso de ser domingo, la tarifa horaria se incrementa en $2.00, si es diurna, y $3.00 en el turno nocturno.
• Un día de trabajo tiene 8 horas, todas en uno solo de los turnos.
Datos de entrada: Turno diurno ó nocturno, horas trabajadas, día de la semana
Datos de salida: Salario de un día de trabajo
*/
int main()
{
//Declaración de variables
char lcTurno;
int liHorasTrabajadas, liDiaSemana, liTotal;
//Entrada de datos
printf("Qu%c turno trabaj%c (Diurno = D, Nocturno = N)?: ", 130, 162);
scanf("%s", &lcTurno);
if (lcTurno != 'D' && lcTurno != 'd' && lcTurno != 'N' && lcTurno != 'n')
{
printf("\nError!, el turno debe ser D %c N.\n", 162);
return 0;
}
printf("Cu%cntas horas trabaj%c?: ", 160, 162);
scanf("%d", &liHorasTrabajadas);
if (liHorasTrabajadas <= 0 || liHorasTrabajadas > 8)
{
printf("\nError!, las horas trabajadas no puede ser 0 %c mayor que 8.\n", 162);
return 0;
}
printf("Qu%c d%ca de la semana trabaj%c (Lunes = 1, Domingo = 7)?: ", 130, 161, 162);
scanf("%d", &liDiaSemana);
if (liDiaSemana <= 0 || liDiaSemana > 7)
{
printf("\nError!, los d%cas de la semana debe ser entre 1-7.\n", 161);
return 0;
}
//Procesamiento
if (lcTurno == 'D' || lcTurno == 'd' && liDiaSemana >= 1 || liDiaSemana <= 6)
{
liTotal = liHorasTrabajadas * 5;
printf("\nA RD$5 la hora, el salario ser%c de: RD$%d\n", 160, liTotal); //Salida de datos
}
else if (lcTurno == 'D' || lcTurno == 'd' && liDiaSemana == 7)
{
liTotal = liHorasTrabajadas * 7;
printf("\nA RD$7 la hora, el salario ser%c de: RD$%d\n", 160, liTotal); //Salida de datos
}
else if (lcTurno == 'N' || lcTurno == 'n' && liDiaSemana >= 1 || liDiaSemana <= 6)
{
liTotal = liHorasTrabajadas * 8;
printf("\nA RD$8 la hora, el salario ser%c de: RD$%d\n", 160, liTotal); //Salida de datos
}
else if (lcTurno == 'N' || lcTurno == 'n' && liDiaSemana == 7)
{
liTotal = liHorasTrabajadas * 11;
printf("\nA RD$11 la hora, el salario ser%c de: RD$%d\n", 160, liTotal); //Salida de datos
}
return 0;
}
Siempre se cumple la primera condición, por qué?, estaré usando mal los char? o alguna otra cosa?.
Espero puedan ayudarme, saludos y gracias de antemano. |