Realizo los ejercicios del libro y empiezo teniendo problemas con las librerias, como conio.h, la cual he encontrado en google que puedo sustituir con ncurses.h...
Cuando realizo un simple programa y en el libro usan getche() yo uso getchar();
pero he aquí mis problemas...
en un programa simple como:
Código:
/* Programa que lee diez letras. Después de que haya leído las letras, muestra la que está en primer lugar en el alfabeto (la que tiene menor valor) de las introducidas. */
#include "stdio.h"
main()
{
char ch, menor='z';
int i;
for(i=1; i<11; i++)
{
printf("Introduce la letra número %d: ", i);
ch = getchar();
if(ch<menor) menor=ch;
}
printf("La letra de menor valor introducida ha sido %c", menor);
}
#include "stdio.h"
main()
{
char ch, menor='z';
int i;
for(i=1; i<11; i++)
{
printf("Introduce la letra número %d: ", i);
ch = getchar();
if(ch<menor) menor=ch;
}
printf("La letra de menor valor introducida ha sido %c", menor);
}
Diréctamente me salta siempre un getchar(), haciendo solo la 1ª, 3ª... y llenando con un espacio en blanco ch en la 2ª, 4ª....
buscando en google encontré como limpiar el buffer antes del getchar... pero que si quieres arroz Catalina.... el programa hace exáctamente lo mismo....
No queriendo estancarme horas buscando un porqué sigo con el siguiente ejercicio:
Código:
/* Programa que alcula el área de un círculo, rectángulo o triángulo utilizando una escalera if-else-if */
#include "stdio.h"
main()
{
int b, a;
float r;
char op;
printf("¿qué área quieres calcular? Rectángulo, Triángulo o Círculo: ");
fflush(stdin);
op = getchar();
if(op=='R'||'r')
{
printf("Introduce la base: ");
scanf("%d", &b);
printf("Introduce la altura: ");
scanf("%d", &a);
printf("El área del rectángulo es: %d", b*a);
}
else if(op=='T'||'t')
{
printf("Introduce la base: ");
scanf("%d", &b);
printf("Introduce la altura: ");
scanf("%d", &a);
printf("El área del triángulo es: %d", (b*a)/2);
}
else if(op=='C'||'c')
{
printf("Introduce el radio: ");
scanf("%f", &r);
printf("El área del círculo es: %f", 3.141592*r*r);
}
}
#include "stdio.h"
main()
{
int b, a;
float r;
char op;
printf("¿qué área quieres calcular? Rectángulo, Triángulo o Círculo: ");
fflush(stdin);
op = getchar();
if(op=='R'||'r')
{
printf("Introduce la base: ");
scanf("%d", &b);
printf("Introduce la altura: ");
scanf("%d", &a);
printf("El área del rectángulo es: %d", b*a);
}
else if(op=='T'||'t')
{
printf("Introduce la base: ");
scanf("%d", &b);
printf("Introduce la altura: ");
scanf("%d", &a);
printf("El área del triángulo es: %d", (b*a)/2);
}
else if(op=='C'||'c')
{
printf("Introduce el radio: ");
scanf("%f", &r);
printf("El área del círculo es: %f", 3.141592*r*r);
}
}
y he aquí que el programa decide que da igual si a la hora de introducir un caracter por teclado le introduces una T, una C..... porque solo realiza el primer if...
¿dónde está todo el problema este de lidiar con este editor, o sistema o son las funciones, compilador, librerias.....? ya me lo empiezo a plantear todo....
¿alguna ayuda?