Discussion:
C muy muy basico. Entrega 1
(demasiado antiguo para responder)
Olaf "El Blanco"
2005-10-22 20:26:05 UTC
Permalink
// Problema 2. Realizar un algoritmo y representarlo con "Diagrama de flujo"
// que lea un carácter por teclado y decida si está comprendido entre la
letras
// "I" y "M". Hacer el análisis previo.

#include <stdio.h>

#define LETRA_I 'I'
#define LETRA_M 'M'

main()
{
char letra;
printf ("Introduce un caracter: ");
scanf ("%c", &letra);
if (LETRA_I < letra < LETRA_M)
printf ("SI");
else
printf ("NO");
return 0;
}


No funciona me dice que siempre se encuentra en ese rango.
Estoy loco! Y no se como hacer para no tener que ir al sheel de DOS para
correr cada programa...
He probado con un c = getchar()
y con un getch() pero el getch() no lo reconoce.

Programo en DEV C++
Luis Angel Fdez. Fdez.
2005-10-22 20:42:41 UTC
Permalink
A las 20:26 del sábado 22 de octubre,
Olaf "El Blanco" <***@yahoo.no>
hablando de C muy muy basico. Entrega 1
en es.comp.lenguajes.c dijo...

Hola
Post by Olaf "El Blanco"
#include <stdio.h>
#define LETRA_I 'I'
#define LETRA_M 'M'
main()
{
char letra;
printf ("Introduce un caracter: ");
scanf ("%c", &letra);
if (LETRA_I < letra < LETRA_M)
El problema está ahí. *Creo* que se evalua primero el
LETRA_I < letra lo que devolverá o cero o uno. En cualquier
caso será un valor menor que LETRA_M por lo que siempre
imprimirá SI.

Creo que deberías usar:
if ((LETRA_I < letra) && (letra < LETRA_M))
Post by Olaf "El Blanco"
printf ("SI");
else
printf ("NO");
return 0;
}
Espero no haberme equivocado y que te sirva de ayuda.

Ta llueu.

- --
Slackware 10.2.0 Kernel 2.6.12.2 i686 (GCC) 3.3.6
AMD Athlon(tm) 64 Processor 3200+ ( 2200.324MHz )
Linux User #99754 Jabber: ***@jabber.org
Hattrick: C.D. Arrancatapinos (488047) VI.759
Zephryn Xirdal
2005-10-22 21:01:44 UTC
Permalink
Post by Olaf "El Blanco"
// Problema 2. Realizar un algoritmo y representarlo con "Diagrama de flujo"
// que lea un carácter por teclado y decida si está comprendido entre la
letras
// "I" y "M". Hacer el análisis previo.
#include <stdio.h>
#define LETRA_I 'I'
#define LETRA_M 'M'
main()
{
char letra;
printf ("Introduce un caracter: ");
scanf ("%c", &letra);
if (LETRA_I < letra < LETRA_M)
printf ("SI");
else
printf ("NO");
return 0;
}
No funciona me dice que siempre se encuentra en ese rango.
Estoy loco! Y no se como hacer para no tener que ir al sheel de DOS para
correr cada programa...
He probado con un c = getchar()
y con un getch() pero el getch() no lo reconoce.
Programo en DEV C++
Eso está mal.
if (LETRA_I < letra < LETRA_M)
Lo que estás haciendo es comparar LETRA_I con letra y el resultado con
LETRA_M.

Lo correcto sería:

if(letra>LETRA_I && letra<LETRA_M)

o sea: si letra es mayor que y letra es menor que.
--
Lo malo es que las máximas se escriben para los demás y raramente para sí
mismo.
-- Abel Dufresne.
==================================================================================
Powered by zxFortunes - It's free -
http://sourceforge.net/projects/zxfortune
GoLiArDo
2005-10-22 23:00:41 UTC
Permalink
Post by Olaf "El Blanco"
// Problema 2. Realizar un algoritmo y representarlo con "Diagrama de flujo"
// que lea un carácter por teclado y decida si está comprendido entre la
letras
// "I" y "M". Hacer el análisis previo.
#include <stdio.h>
#define LETRA_I 'I'
#define LETRA_M 'M'
main()
{
char letra;
printf ("Introduce un caracter: ");
scanf ("%c", &letra);
if (LETRA_I < letra < LETRA_M)
printf ("SI");
else
printf ("NO");
return 0;
}
No funciona me dice que siempre se encuentra en ese rango.
Estoy loco! Y no se como hacer para no tener que ir al sheel de DOS para
correr cada programa...
He probado con un c = getchar()
y con un getch() pero el getch() no lo reconoce.
Programo en DEV C++
Como dicen los mensajes anteriores la comparación del if no es válida lo
correcto sería:

if ((LETRA_I < letra)&&(letra < LETRA_M))

Por otro lado para correr el programa sin tener que ir a la shell
incluye en la cabecera: #include <iostream>
y al final del programa la sentencia: system("PAUSE");

Dandole a F9 en dev c++ compilas y corres el programa y visualizas los
resultados
Luis Angel Fdez. Fdez.
2005-10-23 10:12:51 UTC
Permalink
A las 23:00 del sábado 22 de octubre,
GoLiArDo <***@NOSPAM.es>
hablando de Re: C muy muy basico. Entrega 1
en es.comp.lenguajes.c dijo...

Hola

[...]
Post by GoLiArDo
Por otro lado para correr el programa sin tener que ir a la shell
incluye en la cabecera: #include <iostream>
No creo que sea recomendable utilizar una cabecera propia de
C++ en un programa escrito en C.
Post by GoLiArDo
y al final del programa la sentencia: system("PAUSE");
Yo tengo la función system en la cabecera stdlib.h. Así que
supongo que será mejor incluir esa cabecera.

Ta llueu.

- --
Slackware 10.2.0 Kernel 2.6.12.2 i686 (GCC) 3.3.6
AMD Athlon(tm) 64 Processor 3200+ ( 2200.324MHz )
Linux User #99754 Jabber: ***@jabber.org
Hattrick: C.D. Arrancatapinos (488047) VI.759
GoLiArDo
2005-10-23 11:41:37 UTC
Permalink
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
A las 23:00 del sábado 22 de octubre,
hablando de Re: C muy muy basico. Entrega 1
en es.comp.lenguajes.c dijo...
Hola
[...]
Post by GoLiArDo
Por otro lado para correr el programa sin tener que ir a la shell
incluye en la cabecera: #include <iostream>
No creo que sea recomendable utilizar una cabecera propia de
C++ en un programa escrito en C.
Post by GoLiArDo
y al final del programa la sentencia: system("PAUSE");
Yo tengo la función system en la cabecera stdlib.h. Así que
supongo que será mejor incluir esa cabecera.
Correcto!! Te doy la razon.

Otra forma es usar la función getch(); de la libreria conio.

La libreria conio es exclusiva de Borland, pero en:

http://c.conclase.net/devcpp.php?art=conio

te dan una libreria que intenta emularla para dev-c++;

Sigue las instrucciones y conseguiras que te funcione getch();
newton
2005-10-29 17:45:52 UTC
Permalink
Post by Luis Angel Fdez. Fdez.
Post by GoLiArDo
Por otro lado para correr el programa sin tener que ir a la shell
incluye en la cabecera: #include <iostream>
No creo que sea recomendable utilizar una cabecera propia de
C++ en un programa escrito en C.
Post by GoLiArDo
y al final del programa la sentencia: system("PAUSE");
Yo tengo la función system en la cabecera stdlib.h. Así que
supongo que será mejor incluir esa cabecera.
Yo la tengo en windows.h aunque no se si será estándar o será
exclusiva de borland. Estoy empezando...

Loading...