Buenos dias gente,
Estoy aprendiendo C a partir de manuales y libros y me he encontrado con un problema en mi programilla. Haber si pueden ayudarme a ver mi error.
El problema creo que reside en el do/while, es una estupidez pero no consigo verla. Al seleccionar la opción A todo funciona bien, introduces unos numeros y consigues la conversión de estos pero una vez finalizada la operación te pide si deseas hacer otra operación más, si pulsas N o n sale del programa y todo perfecto pero si por lo contrario seleccionas s o S (o sea, si que quieres realizar otra operación) sale del programa también.
Otro problema que no entiendo porque sucede es que cuando escojo las opciones en las que se tienen que introducir una frase, no me deja escribir la frase y sale del programa. Por que sucede si hay un break?
A continuación les adjunto el código:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
float FC(float c);
float CF(float h);
int main(int argc, char *argv[])
{
float c=0.0, h=0.0, transformer1, transformer2;
char respuesta,seleccion,frase[50],cadena[100];
int temperatura = -60, i=0,j=0, m, llargada;
//do
//{
printf("Selecciona una de las siguientes opciones: \n\n"); printf("A. Transformar grados Farenheit a Celsius y de Celsius a Farenheit\n"); printf("B. Imprimir temperaturas de 10 en 10 des de -60 a 80\n"); printf("C. Imprimir cada palabra de una frase en una nueva línea\n"); printf("D. Imprimir cada letra de una frase en una nueva línea\n"); printf("E. Imprimir una frase de minusculas a mayusculas\n"); printf("F. Salir del programa\n\n"); printf("====================================================\n\n");
switch(seleccion)
{
case 'a':
case 'A':
printf("Introduce un valor para convertir de Celsius a Farenheit\n");
transformer1= CF(c);
printf("%.3f = %.3f\n",c
,transformer1
);
printf("Introduce un valor para convertir de Farenheit a Celsius\n");
transformer2= FC(h);
printf("%.3f = %.3f\n",h
,transformer2
);
break;
case 'b':
case 'B':
for(temperatura = -60; temperatura <80; temperatura=temperatura+10)
{
}
break;
case 'c':
case 'C':
printf("Escriu una frase: \n\n");
while(frase[i]!='\0')
{
if(frase[i]==' ')
{
}
else
{
}
i++;
}
break;
case 'd':
case 'D':
printf("Escriu una frase \n");
while(frase[j]!= '\0')
{
if(frase[j]=' ')
{
}
else
{
}
j++;
}
break;
case 'e':
case 'E':
printf("Introdueix una cadena: \n");
for(m=0;m<llargada;m++)
if((cadena[m]>='a')&&(cadena[m]<='z'))
cadena[m]-=32;
printf("\nCadena en majuscules: \n");
break;
case 'f':
case 'F':
printf("Usted se lo pierde !\n"); break;
default:
printf("Error: Opción incorrecta\n\n"); printf("Aprieta una tecla correcta por favor . . .\n");
} /*fin de switch*/
/*
printf("Quieres realizar otra operación? (S/N)\n");
respuesta=getch();
if((respuesta='N')||(respuesta='n'))
{
printf("Grácias y hasta otra ocasión\n\n");
getch();
break;
}
}while((respuesta!='N') || (respuesta!='n'));
*/
return 0;
}
float CF(float c)
{
float f;
f=1.8*c+32;
return f;
}
float FC(float f)
{
float c;
c=(f-32)/1.8;
return c;
}
Grácias por su tiempo!
Saludos!