Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2012, 04:32
Avatar de sven_uri
sven_uri
 
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 13 años, 7 meses
Puntos: 4
Pregunta Problemas con do/while y switch

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. float FC(float c);
  5. float CF(float h);
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.     float c=0.0, h=0.0, transformer1, transformer2;
  10.     char respuesta,seleccion,frase[50],cadena[100];
  11.     int temperatura = -60, i=0,j=0, m, llargada;
  12.    
  13.     //do
  14.     //{
  15.           printf("Selecciona una de las siguientes opciones: \n\n");
  16.           printf("A. Transformar grados Farenheit a Celsius y de Celsius a Farenheit\n");
  17.           printf("B. Imprimir temperaturas de 10 en 10 des de -60 a 80\n");
  18.           printf("C. Imprimir cada palabra de una frase en una nueva línea\n");
  19.           printf("D. Imprimir cada letra de una frase en una nueva línea\n");
  20.           printf("E. Imprimir una frase de minusculas a mayusculas\n");
  21.           printf("F. Salir del programa\n\n");
  22.           printf("====================================================\n\n");
  23.          
  24.           scanf("%c",&seleccion);
  25.          
  26.           switch(seleccion)
  27.           {
  28.                 case 'a':
  29.                 case 'A':
  30.                       system("CLS");
  31.                       printf("Introduce un valor para convertir de Celsius a Farenheit\n");
  32.                       scanf("%f",&c);
  33.    
  34.                       transformer1= CF(c);
  35.                       printf("%.3f = %.3f\n",c,transformer1);
  36.    
  37.                       printf("Introduce un valor para convertir de Farenheit a Celsius\n");
  38.                       scanf("%f",&h);
  39.    
  40.                       transformer2= FC(h);
  41.                       printf("%.3f = %.3f\n",h,transformer2);
  42.                      
  43.                       getch();
  44.                       break;
  45.                      
  46.                 case 'b':
  47.                 case 'B':
  48.                      system("CLS");
  49.                      
  50.                      for(temperatura = -60; temperatura <80; temperatura=temperatura+10)
  51.                      {
  52.                         printf("%d \n", temperatura);
  53.                      }
  54.                      getch();
  55.                      break;
  56.                      
  57.                 case 'c':
  58.                 case 'C':
  59.                      system("CLS");
  60.                      
  61.                      printf("Escriu una frase: \n\n");
  62.                      
  63.                      gets(frase);
  64.    
  65.                        
  66.                      while(frase[i]!='\0')
  67.                      {
  68.                          
  69.                          if(frase[i]==' ')
  70.                          {
  71.                              printf("\n");
  72.                          }
  73.                          else
  74.                          {
  75.                              printf("%c",frase[i]);
  76.                          }
  77.                            
  78.                          i++;
  79.                      }
  80.                      getch();
  81.                      break;
  82.                      
  83.                  case 'd':
  84.                  case 'D':
  85.                       system("CLS");
  86.                       printf("Escriu una frase \n");
  87.                       gets(frase);
  88.    
  89.                          
  90.                        while(frase[j]!= '\0')
  91.                        {
  92.                              printf("%c",frase[j]);
  93.                        
  94.                              if(frase[j]=' ')
  95.                              {
  96.                                  printf("\n");
  97.                              }
  98.                              else
  99.                              {
  100.                                  printf("%c",frase[j]);
  101.                              }
  102.                                                
  103.                              j++;
  104.                        }
  105.                        getch();
  106.                        break;
  107.                        
  108.                  case 'e':
  109.                  case 'E':
  110.                       system("CLS");                  
  111.                        
  112.                       printf("Introdueix una cadena: \n");
  113.                       gets(cadena);
  114.                       llargada=strlen(cadena);
  115.                            
  116.                       for(m=0;m<llargada;m++)
  117.                      
  118.                               if((cadena[m]>='a')&&(cadena[m]<='z'))
  119.                                    cadena[m]-=32;
  120.                            
  121.                       printf("\nCadena en majuscules: \n");
  122.                       puts(cadena);
  123.                      
  124.                       printf("\n");                      
  125.                      
  126.                       getch();
  127.                       break;                    
  128.                                            
  129.                 case 'f':
  130.                 case 'F':
  131.                      printf("Usted se lo pierde !\n");
  132.                      break;
  133.    
  134.                 default:
  135.                         printf("Error: Opción incorrecta\n\n");
  136.                         printf("Aprieta una tecla correcta por favor . . .\n");
  137.                        
  138.            } /*fin de switch*/
  139.        /*    
  140.            printf("Quieres realizar otra operación? (S/N)\n");
  141.            respuesta=getch();
  142.            
  143.            if((respuesta='N')||(respuesta='n'))
  144.            {
  145.                printf("Grácias y hasta otra ocasión\n\n");
  146.                getch();
  147.                break;
  148.            }
  149.     }while((respuesta!='N') || (respuesta!='n'));
  150.     */
  151.    
  152.     system("PAUSE");
  153.     return 0;
  154. }
  155. float CF(float c)
  156.     {
  157.           float f;
  158.           f=1.8*c+32;
  159.           return f;
  160.     }
  161.          
  162.  float FC(float f)
  163.     {
  164.           float c;
  165.           c=(f-32)/1.8;
  166.           return c;
  167.     }

Grácias por su tiempo!

Saludos!

Última edición por sven_uri; 30/03/2012 a las 05:17