Ayuda con programa en C++

Iniciado por venombrain, 24 Junio 2014, 07:30 AM

0 Miembros y 1 Visitante están viendo este tema.

venombrain

Buenas, quisiera saber si me pudiesen ayudar con lo siguiente, resulta que estoy realizando un código de c++ el cual tiene un Menu y dependiendo de la elección realiza una solución, el caso es que lo que llevo escrito lo realiza bien pero al momento de insertar el siguiente código no lo ejecuta correctamente, les dejo el código a continuación.

char letra;
    printf("Ingrese una letra: ");
scanf( "%d", &letra);
      if(letra=='a'||letra=='e'||letra=='i'||letra=='o'||letra=='u'||letra=='A'||letra=='E'||letra=='I'||letra=='O'||letra=='U') {
  printf("La letra %c es una vocal\n", letra); }
      else  {
  printf("La letra %c no es una vocal\n", letra); }
  getch();
  system("cls");


Este funciona correctamente, pero en el siguiente código no realiza su función correctamente (Detectar si la letra ingresada es una vocal o no)

int opcion,opcion1,opcion2,n,contador,b,mayor;
float var1,var2,resultado;


opcion=0;

while (opcion!=6)

{
printf("Menu\n\n");
        printf("1.- Calculadora\n");
        printf("2.- Conversor de distancias\n");
printf("3.- Comparador de 3 enteros\n");
printf("4.- Reconocedor de vocales\n");
printf("5.- Suma con IVA\n");
        printf("6.- Salir\n\n");
        printf("Ingrese Opcion: ");

scanf("%d",&opcion);
system("cls");

switch (opcion) {
       
case 1: // Opción 1 menu principal
       
printf("Ingrese opcion a calcular\n\n");
        printf("1.- Area de un triangulo\n");
        printf("2.- Area de un circulo\n");
printf("3.- Area de un rectangulo\n");
printf("4.- U otro numero Salir\n\n");
printf("Ingrese Opcion: ");
scanf("%d", &opcion1);
system("cls");

switch (opcion1) {
case 1:
           printf("Ingrese la base del triangulo: ");
           scanf("%f",&var1);
           printf("Ingrese la altura del triangulo: ");             
           scanf("%f",&var2);
           resultado=(var1*var2)/2;
           printf("El area del triangulo es de: %.2f unidades cuadradas",resultado);
   getch();
   system("cls");
   break;

case 2:
           printf("Ingrese el radio del circulo: ");
           scanf("%f",&var1);
           resultado=(var1*var1)*3.14;
           printf("El area del circulo es de: %.2f unidades cuadradas",resultado);
   getch();
   system("cls");
   break;

  case 3:
           printf("Ingrese el largo del rectangulo: ");
           scanf("%f",&var1);
           printf("Ingrese el ancho del rectangulo: ");             
           scanf("%f",&var2);
           resultado=var1*var2;
           printf("El area del rectangulo es de: %.2f unidades cuadradas",resultado);
   getch();
   system("cls");
   break;
   }

        break;

case 2: // Opción 2 menu principal

printf("Ingrese opcion a convertir\n\n");
        printf("1.- De Kilometros a centimetros\n");
        printf("2.- De Millas a Pies\n");
printf("3.- De Yardas a Pulgadas\n");
printf("4.- U otro numero Salir\n\n");
printf("Ingrese Opcion: ");
scanf("%d", &opcion2);
system("cls");


switch (opcion2)

{
case 1:
   printf("Ingrese los kilometros a convertir en centimetros: ");
   scanf("%f",&var1);
   var2=var1;
           resultado= var1 * 100000;
   printf("%.2f", var2);
           printf(" Kilometros equivalen a: %.2f centimetros",resultado);
   getch();
   system("cls");
   break;
   
case 2:
   printf("Ingrese las millas a convertir en pies: ");
   scanf("%f",&var1);
   var2=var1;
           resultado= var1 * 5280;
   printf("%.2f", var2);
           printf(" Millas equivalen a: %.2f Pies",resultado);
   getch();
   system("cls");
   break;

case 3:
   printf("Ingrese las yardas a convertir en pulgadas: ");
   scanf("%f",&var1);
   var2=var1;
           resultado= var1 * 36;
   printf("%.2f", var2);
           printf(" Yardas equivalen a: %.2f Pulgadas",resultado);
   getch();
   system("cls");
   break;



}
break;

case 3: // Opción 3 menu principal
         b=0;
         contador=0;
         while(contador<3)
         {
         printf("Ingrese numero a comparar:");
         scanf("%d",&n);
         system("cls");
         if(b==0||n>mayor)
         {
         mayor=n;
         b=1;
         }
         contador=contador+1;
         }
         printf("El mayor de los numeros ingresados es: %d",mayor);
           if (mayor%2==0)
           printf(" y es un numero par");
   else
       printf(" y es un numero impar");
           getch();
   system("cls");
   break;

case 4:

    char letra;
    printf("Ingrese una letra: ");
scanf( "%d", &letra);
      if(letra=='a'||letra=='e'||letra=='i'||letra=='o'||letra=='u'||letra=='A'||letra=='E'||letra=='I'||letra=='O'||letra=='U') {
  printf("La letra %c es una vocal\n", letra); }
      else  {
  printf("La letra %c no es una vocal\n", letra); }
  getch();
  system("cls");
break;
}
}

system("pause");


return 0;
}



Si fueran tan amables de decirme en lo que estoy fallando les estaría muy agradecido, saludos y muchas gracias de antemano.

eferion

Imagino que estás empezando a meterte en temas de programación. Te comento algunas guías que deberías usar:

* Divide el código en funciones sencillas. Un while con un switch dentro, que contiene ifs no es algo sencillo de manejar.

* Si usas C++ y estás aprendiendo, usa elmentos propios de C++, en caso contrario, programa en C. Es más fácil cogerle el punto a las capacidades de cada lenguaje y te evitará quebraderos de cabeza. En este caso, deberías usar 'cin' en vez de 'scanf' y 'cout' en vez de 'printf':

Código (cpp) [Seleccionar]

#include <iostream>

int main( )
{
  int numero;
  cout << "Introduce un número: ";
  cin >> numero;
  cout << "El número introducido es: " << numero << endl;
}


* Para las variables, elige nombres con significado... opcion, opcion1, opcion2, var1, var2 no parecen nombres muy significativos, intenta evitarlos.

* Las variables inicialízalas siempre. Si no inicializas un puntero puede que al depurar no seas capaz de ver si el puntero accede a posiciones de memoria válidas.

Código (cpp) [Seleccionar]

int opcion = 0;
int opcion1 = 0;
int opcion2 = 0;
// ...


* Intenta declarar las variables cuando vayas a usarlas. Esto te evitará problemas al codificar los programas. Reutilizar variables a veces es una fuente muy tonta de errores difíciles de encontrar.

* Evita el uso de getch y de system. Puedes ver algunos motivos en este otro hilo

* En tu caso, estás intentando leer un carácter, lo normal es que utilizases %c para leerlo en vez de %d (%d es para enteros, %c para caracteres)