[ Foro de C++ ]

ayuda en c++

24-Jun-2014 07:48
Invitado (VENOMBRAIN)
1 Respuestas

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.


24-Jun-2014 10:22
Nacho Cabanes (+84)

El formato de lectura está mal: no debería ser


 scanf( "%d", &letra);


Sino


 scanf( "%c", &letra);


Porque estas leyendo una letra (char).

Por cierto,  siendo estrictos, tu programa no está en  C++ sino en  C.  No empleas ninguna característica de  C++ que no sea parte de C.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)