Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Programa que hace lo que le da la gana

Estas en el tema de Programa que hace lo que le da la gana en el foro de C/C++ en Foros del Web. Hola, estoy haciendo un programa en C que segun la tecla que se pulse hace una cosa u otra,el problema es que me muestra siempre ...
  #1 (permalink)  
Antiguo 19/11/2009, 17:05
 
Fecha de Ingreso: enero-2008
Mensajes: 111
Antigüedad: 16 años, 3 meses
Puntos: 0
Programa que hace lo que le da la gana

Hola, estoy haciendo un programa en C que segun la tecla que se pulse hace una cosa u otra,el problema es que me muestra siempre el mismo resultado y alomejor cierro y luego me muestra otro diferente todo el rato.¿Podeis ayudarme?

Un saludo

Código:
#include <stdio.h>
#include <conio.h>


   float main()
{
      char t;
      char f;
      float salario;
      salario=0;
      printf("1. Pulsa D para turno de DIA o Pulsa N para turno de NOCHE\n");
      scanf("%c",&t);
      printf("1. Pulsa L para LABORAL o Pulsa F para FESTIVO\n");
      scanf("%c",&f);
      getch();
      if (t=="D" || "d")
      {

          if (f=="L" || "l")
          {
             salario=5;
          }
          if (f=="F" || "f")
          {
             salario=7;
          }

      }
     else if(t=="N" || "n")
     {
            if (f=="L" || "l")
            {
             salario=8;
            }
          if (f=="F" || "f")
            {
             salario=11;
            }


     }

    printf("\n Su salario es de %.2f \n",salario*8);
    getch();

}
Pd:He probado a cambiar las letras por sus respectivos numero decimales en ascii y sigue fallando.
  #2 (permalink)  
Antiguo 19/11/2009, 17:39
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: Programa que hace lo que le da la gana

El error que noto a simple vista es que tus condiciones de los if estan mal
if (t=="D" || "d")
deberia ser
if (t=='D' || t=='d')

Porque de la otra manera esta evaluando [t=="D" (que puede devolver verdadero o falso)] o ["d"] que al ser un valor distinto de 0/cadena vacia, evalua como verdadero, por lo que siempre se cumplira la condicion.

Ademas de que con tu codigo estas comparando contra cadenas, no contra caracteres, los valores de caracter van entre comillas sencillas
  #3 (permalink)  
Antiguo 20/11/2009, 04:26
 
Fecha de Ingreso: enero-2008
Mensajes: 111
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Programa que hace lo que le da la gana

Ya lo he solucionado,el problema era que cuando metia las letras el valor se quedaba en el buffer y no variaba.He usado la funcion fflush y ya funciona de maravilla.

Un saludo
  #4 (permalink)  
Antiguo 20/11/2009, 05:10
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Programa que hace lo que le da la gana

fflush con stdin no se debe usar (tampoco conio.h) al estar su funcionamiento indefinido por el standard.

Mejor no ensuciar el buffer como hace scanf y usar fgets (con stdin) y sscanf sobre lo leido, de esta manera ademas podemos especificar el tamaño del buffer facilmente.

PD. Lo que dijo darkasecas era correcto, no se pueden comparar caracteres con cadenas (punteros a caracteres).
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 20/11/2009, 06:47
 
Fecha de Ingreso: enero-2008
Mensajes: 111
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Programa que hace lo que le da la gana

Ok,lo tendré en cuenta para la proxima vez.
Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:40.