Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/01/2015, 12:46
RGT
Usuario no validado
 
Fecha de Ingreso: noviembre-2008
Mensajes: 505
Antigüedad: 15 años, 4 meses
Puntos: 5
Pregunta 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.