Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: angardo en 2 Julio 2017, 02:14 am



Título: ayuda con mi primera calculadora
Publicado por: angardo en 2 Julio 2017, 02:14 am
hola, soy nuevo en en lenguaje de c y quisiera saber cual es mi error, mi código es el siguiente:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main(){
  5. float numero1,numero2, resultado;
  6. char signo;
  7. printf("pot = potencia \n");
  8. printf("raiz2 = raiz cuadrada \n");
  9. printf("* = multiplicacion \n");
  10. printf("/ = division\n");
  11. printf("+ = suma\n");
  12. printf("- = resta\n");
  13. printf("ingrese la operacion que desee realizar:\n");
  14. scanf("%c",&signo);
  15. printf("ingrese el primer numero:\n");
  16. scanf("%f",&numero1);
  17. if (signo!= "raiz2" ){
  18. printf("ingrese el segundo numero:\n");
  19.    scanf("%f",&numero2);
  20. }
  21.  
  22. switch(signo){
  23. case "raiz2":
  24. resultado=sqrt(numero1);
  25. case "pot":
  26. resultado=pow(numero1,numero2);
  27. case "*":
  28. resultado= numero1*numero2;
  29. case "/":
  30. resultado=numero1/numero2;
  31. case "+":
  32. resultado=numero1+numero2;
  33. case "-":
  34. resultado=numero1 - numero2;
  35. default:
  36. printf("no podemos realizar esa operacion!\n");
  37.    }
  38.    printf("el resutado es:%f  \n",resultado );
  39.    system("pause");
  40.    return 0;
  41. }
  42.  

a la hora de compilar el error que me muestra en el if es:
comparison between pointer and integer
 
y en cada uno de los case es:

case label does not reduce to an integer constant


que puedo hacer para solucionarlo y por qué me sale este error?


· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro (http://foro.elhacker.net/reglas.htm)
-Engel Lex


Título: Re: ayuda con mi primera calculadora
Publicado por: MAFUS en 2 Julio 2017, 02:40 am
signo es un carácter y un carácter no se puede comparar con una cadena, en este caso raiz2.

Lo mismo para los case. El valor de los case sólo pueden ser constantes numéricas. Los caracteres como tales también son números, no así las cadenas que son arrays.


Título: Re: ayuda con mi primera calculadora
Publicado por: PJ Yeah en 5 Julio 2017, 06:24 am
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. int main(){
  5. float numero1,numero2, resultado;
  6. char signo;
  7. printf("^ = potencia \n");
  8. printf("r = raiz cuadrada \n");
  9. printf("* = multiplicacion \n");
  10. printf("/ = division\n");
  11. printf("+ = suma\n");
  12. printf("- = resta\n");
  13. printf("ingrese la operacion que desee realizar:\n");
  14. scanf("%c",&signo);
  15. printf("ingrese el primer numero:\n");
  16. scanf("%f",&numero1);
  17. if (signo!='r' ){
  18. printf("ingrese el segundo numero:\n");
  19.    scanf("%f",&numero2);
  20. }
  21.  
  22. switch(signo){
  23. case 'r':
  24. resultado=sqrt(numero1);
  25.      break;
  26. case '^':
  27. resultado=pow(numero1,numero2);
  28.      break;
  29. case '*':
  30. resultado=numero1*numero2;
  31.      break;
  32. case '/':
  33. resultado=numero1/numero2;
  34.      break;
  35. case '+':
  36. resultado=numero1+numero2;
  37.      break;
  38. case '-':
  39. resultado=numero1-numero2;
  40.      break;
  41. default:
  42. printf("no podemos realizar esa operacion!\n");
  43.      break;
  44.    }
  45.    printf("el resutado es: %.2f  \n",resultado );
  46.    system("pause");
  47.    return 0;
  48. }
en lugar de usar (" ") usa los (' ') cuando quieras hacer los case con una variable char


Título: Re: ayuda con mi primera calculadora
Publicado por: angardo en 5 Julio 2017, 23:52 pm
ya me funcionó, gracias!