Ver Mensaje Individual
  #7 (permalink)  
Antiguo 29/05/2014, 16:24
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 11 meses
Puntos: 38
Respuesta: Problema con scanf

Bueno amigo ya lo repase pero como no lo has puesto el código entero te lo dire los fallos que vi.
1º En a algunos switch te olvidas poner los casos por defecto (default), y siempre hay que ponerlos ¿ok?

2º lo de que no te funcione es por el case 1: que debe poner los '' entre el 1... case '1':
cuando vayas tomar una sola letra puedes usar getch o getchar. Con getch al elegir 1 no hace falta pulsar el enter así que puede que te guste mas, el problema es cuando vas ingresar mas de una letra o numero como 233 que getch solo toma la primera causando error, pero para elegir es perfecta ;)

Código C:
Ver original
  1. #include<stdio.h>
  2.  
  3. int calcular ();
  4. void suma ( float a, float b );
  5.  
  6. int main() {
  7.  
  8.     int opcion = 0;
  9.    
  10.    
  11.     printf ( "Ingresar opcion:\n1 para calculo de 2 numeros con un operando\n2 para factorial\n3 para exponencial\n4 para calculos trigonometricos\n5 para conversion a hexadecimal/binario \n\n" );
  12.    
  13.     opcion = getche();
  14.    
  15.     switch ( opcion ) {
  16.    
  17.         case '1':
  18.             calcular();
  19.             break;
  20.            
  21.         default:
  22.             printf ( "\nOtra opcion\n" );
  23.             break; // Te falto el break aqui Debes ponerlo tambien en default
  24.            
  25.     }
  26.    
  27. }
  28.  
  29.  
  30. int calcular(){
  31.     float a, b;
  32.     char operador, enter;
  33.    
  34.     printf ( "\nIngresar la operacion\n" );
  35.     operador = getche();
  36.        
  37.     printf ( "\nIngresar primer numero: " );
  38.     //scanf("%f %c", &a, &enter);
  39.     scanf("%f", &a);
  40.     printf ( "\nIngresar segundo numero: " );
  41.     scanf("%f", &b);
  42.    
  43.    
  44.     switch ( operador ) {
  45.         case '+':
  46.             suma ( a, b );
  47.             break;
  48.            
  49.         default:
  50.             printf ( "\nSiempre debe llevar default\n" );
  51.             break; // Siempre poner break;
  52.            
  53.            
  54.            
  55.     }
  56. }
  57.  
  58. void suma ( float a, float b ){
  59.     printf("%f + %f = %f", a, b, (a+b) );
  60. }

Si ves algún problema mas dilo que aquí seguimos intentando solucionar XD
suerte!