Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2012, 03:34
Avatar de sven_uri
sven_uri
 
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 13 años, 6 meses
Puntos: 4
Pregunta Problemas con un bucle do/while infinito xD

Buenas a todos,

Estoy aprendiendo C y he creado este mini programa que es un menu con switch con diversas opciones que interactuan con el usuario para decidir si proceder, salir, realizar otra operación... El caso es que con tanto do/while hay operaciones que no llegan ni a inicializarse. Haber que les parece:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. float areaTriangulo(float pBase, float pAltura);
  6. float areaRectangulo(float pLado1, float pLado2);
  7.  
  8. int main(){
  9.     float base, altura, lado1, lado2, lado3, area, perimetro;
  10.     char seleccion,respuesta
  11.     //int deseaContinuar = 1;
  12.  
  13. do
  14. {
  15.  
  16.     printf("Selecciona el area de un triangulo o un rectangulo(t/r) \n");
  17.     scanf("%c",&seleccion);
  18.    
  19.     do
  20.     {
  21.  
  22.         switch(seleccion)
  23.         {
  24.             case 't':
  25.                 system("CLS");
  26.                 printf("Hola soy un triangulo\n");
  27.                 printf("Digiste la base: \n");
  28.                 scanf("%f",&lado1);
  29.                 printf("Digiste la altura: \n");
  30.                 scanf("%f",&lado2);
  31.                 printf("%.2f \n",areaTriangulo(lado1, lado2));
  32.                 getch();
  33.  
  34.  
  35.                 break;
  36.             case 'r':
  37.                 system("CLS");
  38.                 printf("Hola soy un rectangulo\n");
  39.                 printf("Digiste el largo: \n");
  40.                 scanf("%f",&lado1);
  41.                 printf("Digiste el ancho: \n");
  42.                 scanf("%f",&lado2);
  43.                 printf("%.2f \n",areaRectangulo(lado1, lado2));
  44.                 getch();
  45.                 break;
  46.  
  47.             case 'e':
  48.             case 'E':
  49.                  break;
  50.                  
  51.             default:
  52.                     printf("Error: Opcio incorrecta");
  53.                     printf("Aprieta una tecla correcta ...");
  54.                     getch();
  55.                
  56.         }/*fin del switch*/
  57.      
  58.      }while((seleccion!='e')&&(seleccion!='E'));
  59.      
  60.      do
  61.      {
  62.          printf("Quieres realizar otra operación?(S/N)");
  63.          respuesta=getch();
  64.          
  65.          }while((respuesta!='S')&&(respuesta!='N'));
  66.      
  67.      }while(respuesta=='S');
  68.        
  69.  
  70.     system("PAUSE");
  71.     return 0;
  72. }
  73.  
  74. float areaTriangulo(float pBase, float pAltura)
  75. {
  76.     float areaTriangulo = pBase*pAltura*0.5;
  77.     return areaTriangulo;
  78. }
  79. float areaRectangulo(float pLado1, float pLado2)
  80. {
  81.     float areaRectangulo = pLado1*pLado2;
  82.     return areaRectangulo;
  83. }

Haber si consiguen solucionarme el uso del do/while para que no me vuelva a suceder más por que llebo horas haciendo pruebas sin ver mi error.

Grácias por su tiempo.

Saludos!