/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

como puedo cargar un caracter en este programa de dev-c++

 
      Índice del Foro elrincondelc.com -> Trabajos de clase
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
rojid



Registrado: 22 Oct 2007
Mensajes: 9

MensajePublicado: 24/10/2007 9:58 am
Título: como puedo cargar un caracter en este programa de dev-c++

#include <stdio.h>
#include <conio.h>
#define c=1
int main(void)
{
char u;
float n,a,b,d;
printf("introduce el valor de la temperatura:\n");
getch();
scanf("%f",&n);
printf("int inicial del valor: c:celsius k:kelvin f:farenheit:\n");
scanf("%c",&u);
if (u=='c')
{
a=n;
b=n+273.15;
d=n*1.8+32;
printf("%.2f=celcius %.2f=kelvin %.2f=farenheit\n",a,b,d);
}
else
{
printf("la letra es erronea\n");
}
getch();
return 0;
}


este es un resumen del programa que he echo, como darle un valor a 'c' para que me funcione bien el programa, en clase me exigen hacerlo con if y else.
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 223
Ubicación: Cono Sur

MensajePublicado: 24/10/2007 2:30 pm
Título:

Hola

Siguiendo con el hilo de la pregunta que planteaste en otra sección ("Temperaturas"), el código puede sustituirse con la función if-else if-else así:

Código:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char u;
    float n, c, k, f;
    printf("Valor: ");
    scanf("%f%*c", &n);
    printf("Ingrese c, k, o f: ");
    scanf("%c", &u);
    if(u=='c')
    {
            k=(n*293.65)/20.5;
            f=(n*68.90)/20.5;
            printf("%.2f celcius= %.2f kelvin= %.2f farenhreit\n\n", n, k, f);
    }
    else if(u=='k')
    {
            c=(n*20.5)/293.65;
            f=(n*68.90)/293.65;
            printf("%.2f kelvin= %.2f celcius= %.2f farenhreit\n\n", n, c, f);
    }
    else if(u=='f')
    {
            c=(n*20.5)/68.90;
            k=(n*293.65)/68.90;
            printf("%.2f farenhreit= %.2f celcius= %.2f kelvin\n\n", n, c, k);
    }
    else printf("*** Error de unidad ***\n\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}


Con respecto al programa que tú colocas arriba, no deberías utilizar la librería de terceros conio.h si eres principiante -trata de hacerlo todo en C Estándar-.
Un error que encuentro en tu código es en
Código:
#define c=1

esa declaración es incorrecta en C. Lo correcto sería:
Código:
#define C 1


Como costumbre se usa generalmente un nombre de constante en mayúsculas, es por eso que coloco C y no c. Ahora, no le veo el sentido que uses un define y le asignes el valor 1 a la constante C. Analiza el código que puse arriba y adáptalo al tuyo.

Un saludo
Volver arriba
rojid



Registrado: 22 Oct 2007
Mensajes: 9

MensajePublicado: 25/10/2007 6:40 am
Título: me sale el mismo error

Gracias, pero no se que pasa,lo he echo tal como me has dicho pero se ejecuta, cuando pulso "c" me salta directamente a la condicion "else", no se que pasa? parece que no entiende el caracter "c", he probrado de modificar todo el programa pero entrando numeros en vez de letras "c k f" el programa va de lujo, pero con letras que error todo el rato, no se que pasa con dev-c++?
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 223
Ubicación: Cono Sur

MensajePublicado: 25/10/2007 7:27 am
Título:

Si copiaste el código tal cual edité arriba, y lo compilas en C, te debe funcionar sin problemas; a menos que le hayas modificado la entrada de datos en:
Código:

scanf("%f%*c", &n);

por esto:
Código:
scanf("%f", &n);


De última si no te sigue arrojando los resultados esperados prueba el siguiente código modificado:
Código:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int ch;
    char u;
    float n, c, k, f;
    printf("Valor: ");
    scanf("%f", &n);
    /* Eliminar los caracteres restantes de la ínea: */
     while((ch=fgetc(stdin))!=EOF && ch!='\n')
          ; /* Descartar el resto de la línea */
    printf("Ingrese c, k, o f: ");
    scanf("%c", &u);
    if(u=='c')
    {
            k=(n*293.65)/20.5;
            f=(n*68.90)/20.5;
            printf("%.2f celcius= %.2f kelvin= %.2f farenhreit\n\n", n, k, f);
    }
    else if(u=='k')
    {
            c=(n*20.5)/293.65;
            f=(n*68.90)/293.65;
            printf("%.2f kelvin= %.2f celcius= %.2f farenhreit\n\n", n, c, f);
    }
    else if(u=='f')
    {
            c=(n*20.5)/68.90;
            k=(n*293.65)/68.90;
            printf("%.2f farenhreit= %.2f celcius= %.2f kelvin\n\n", n, c, k);
    }
    else printf("*** Error de unidad ***\n\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}

Con esa versión (al igual que la anterior) se evita el uso del no estandarizado fflush(stdin), aunque el uso de esta instrucción también debería funcionar en tu Dev-C++ ("for Windows"). En el foro hay muchas discuciones sobre este tema.

Código:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{

    char u;
    float n, c, k, f;
    printf("Valor: ");
    scanf("%f", &n);
    fflush(stdin); /* Un programador con sombrero puesto NO debería usar esta declaración */
    printf("Ingrese c, k, o f: ");
    scanf("%c", &u);
    if(u=='c')
    {
            k=(n*293.65)/20.5;
            f=(n*68.90)/20.5;
            printf("%.2f celcius= %.2f kelvin= %.2f farenhreit\n\n", n, k, f);
    }
    else if(u=='k')
    {
            c=(n*20.5)/293.65;
            f=(n*68.90)/293.65;
            printf("%.2f kelvin= %.2f celcius= %.2f farenhreit\n\n", n, c, f);
    }
    else if(u=='f')
    {
            c=(n*20.5)/68.90;
            k=(n*293.65)/68.90;
            printf("%.2f farenhreit= %.2f celcius= %.2f kelvin\n\n", n, c, k);
    }
    else printf("*** Error de unidad ***\n\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}


Y si aun sigue sin funcionar, reinstala nuevamente el Dev-C++.

Un saludo
Volver arriba
rojid



Registrado: 22 Oct 2007
Mensajes: 9

MensajePublicado: 25/10/2007 10:39 pm
Título: Gracias me funciona bien, pero.....

Muchas gracias digies,
A la respuesta de porque pongo " #include <conio.h> ", el profesor d ela universidad nos dijo que si no lo poniamos el ""getch()"" no se cargaria y por no llevarle la contraria lo he puesto.

No se programar seguramente el prog. que te adjunto veras algunos errores o alguna funcion que sobraria y el prog. iria igualmente, he echo este programa y despues de compilar me funciona perfectamente, solo una cosa no me funciona bien el "" n =getche()"", lo pongo porque el profe. quiere que cuando pulsamos la inicial de celsius, kevin o farenheit salga el resultado en pantalla sin pulsar return. Perdon por mi ignorancia pero que significa y porque: "%f%*c", entiendo que %f define que el num. sera flotante pero lo otro porque?? %*c ??


Muchas por contestar todas mis preguntas, seguramente muchas te padeceran tonterias.




#include <stdio.h>
#include <conio.h>
int main(void)
{

float n,c,k,f;
char u;
printf("Introduce el valor de la temperatura, RETURN i la tecla (C,F,K)\n");
printf("de la unidad (c: celsius, f: farenheit, k: kelvin)\n");
scanf("%f%*c",&n);
scanf("%c",&u);
if (u=='c' || u=='C')
{
c=n;
k=n+273.15;
f=(1.8*n)+32;
printf("%.2f Celcius = %.2f Kelvin = %.2f Farenheit\n",c,k,f);
}else
if (u=='k' || u=='K')
{
k=n;
c=n-273.15;
f=(n*1.Cool-459.67;
printf("%.2f Kelvin = %.2f Celcius = %.2f Farenheit\n",k,c,f);
}else
if (u=='f' || u=='F')
{
f=n;
c=(n-32)/1.8;
k=(n+459.67)/1.8;
printf("%.2f Farenheit = %.2f Celsius = %.2f Kelvin\n",f,c,k);
}else
printf("Opcion incorrecta\n");
n == getche();
return 0;
}
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 223
Ubicación: Cono Sur

MensajePublicado: 26/10/2007 6:37 am
Título:

Todavía no entiendo cómo es que aun hay profesores que enseñan el [CENSORED] conio a programadores recién iniciados.

Las funciones getch y getche como veras no forman parte del estándar de C, es por eso que debes utilizar la librería conio, aunque para la primera función no hace falta usar la conio porque el Dev-C++ te lo reconoce igual (aunque te advierte con un Warning cuando lo compilas). Tal vez el getche no te funcione correctamente porque no instalaste el conio, porque la extención de conio no es la correcta (según la versión instalada), o porque al getche lo estás implementando mal en tu código -no lo analicé al tuyo-.

Ahora en el caso que lo tengas al conio instalado, debes darle a esa librería la extención que corresponde según su versión:
#include <conio.c> o #include <conio.2h>
Si mal no recuerdo el #include <conio.h> no te funcionará en el Dev-C++.

Coloco aquí el código a lo que quieres llegar (por ejemplo al pulsar la tecla <C> el programa te mostrará directamente el resultado de la conversión sin pulsar ningún <Enter>):
Código:

#include <stdio.h>
#include <conio.c>
#include <stdlib.h>

int main(void)
{
    float n,c,k,f;
    char u;
    do
    {
        printf("Temperatura: ");
        scanf("%f%*c",&n);
        printf("C-F-K: ");
        fflush( stdout );
        u=getch();
        if (u=='c' || u=='C')
        {
            k=(n*293.65)/20.5;
            f=(n*68.90)/20.5;
            printf("\n%.2f celcius= %.2f kelvin= %.2f farenhreit\n\n", n, k, f);
            break;
        }
        else if (u=='k' || u=='K')
        {
            c=(n*20.5)/293.65;
            f=(n*68.90)/293.65;
            printf("\n%.2f kelvin= %.2f celcius= %.2f farenhreit\n\n", n, c, f);
            break;
        }
        else if (u=='f' || u=='F')
        {
            c=(n*20.5)/68.90;
            k=(n*293.65)/68.90;
            printf("\n%.2f farenhreit= %.2f celcius= %.2f kelvin\n\n", n, c, k);
            break;
        }
        else
        {
             printf("\nOpcion incorrecta\n");
             break;
        }
    }
    while(u=='c' || u=='C' || u=='k' || u=='K' || u=='f' || u=='F');
    return EXIT_SUCCESS;
}


Con respecto al "%*c" en el scanf lo que se hace es leer el caracter '\n' que se inserta al pulsar la tecla <Enter>. Como dije anterirmente, hay mucha información de este tema en el foro, solo tienes que buscarlo. En todo caso si tu duda persiste, plantéalo en el foro principiantes y/o C/C++ general y seguro te responderán.

Un saludo
Volver arriba
      Índice del Foro elrincondelc.com -> Trabajos de clase
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com