ayuda con mi primera calculadora

Iniciado por angardo, 2 Julio 2017, 02:14 AM

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

angardo

hola, soy nuevo en en lenguaje de c y quisiera saber cual es mi error, mi código es el siguiente:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
float numero1,numero2, resultado;
char signo;
printf("pot = potencia \n");
printf("raiz2 = raiz cuadrada \n");
printf("* = multiplicacion \n");
printf("/ = division\n");
printf("+ = suma\n");
printf("- = resta\n");
printf("ingrese la operacion que desee realizar:\n");
scanf("%c",&signo);
printf("ingrese el primer numero:\n");
scanf("%f",&numero1);
if (signo!= "raiz2" ){
printf("ingrese el segundo numero:\n");
   scanf("%f",&numero2);
}

switch(signo){
case "raiz2":
resultado=sqrt(numero1);
case "pot":
resultado=pow(numero1,numero2);
case "*":
resultado= numero1*numero2;
case "/":
resultado=numero1/numero2;
case "+":
resultado=numero1+numero2;
case "-":
resultado=numero1 - numero2;
default:
printf("no podemos realizar esa operacion!\n");
   }
   printf("el resutado es:%f  \n",resultado );
   system("pause");
   return 0;
}


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
-Engel Lex

MAFUS

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.

PJ Yeah

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
float numero1,numero2, resultado;
char signo;
printf("^ = potencia \n");
printf("r = raiz cuadrada \n");
printf("* = multiplicacion \n");
printf("/ = division\n");
printf("+ = suma\n");
printf("- = resta\n");
printf("ingrese la operacion que desee realizar:\n");
scanf("%c",&signo);
printf("ingrese el primer numero:\n");
scanf("%f",&numero1);
if (signo!='r' ){
printf("ingrese el segundo numero:\n");
    scanf("%f",&numero2);
}

switch(signo){
case 'r':
resultado=sqrt(numero1);
      break;
case '^':
resultado=pow(numero1,numero2);
      break;
case '*':
resultado=numero1*numero2;
      break;
case '/':
resultado=numero1/numero2;
      break;
case '+':
resultado=numero1+numero2;
      break;
case '-':
resultado=numero1-numero2;
      break;
default:
printf("no podemos realizar esa operacion!\n");
      break;
    }
    printf("el resutado es: %.2f  \n",resultado );
    system("pause");
    return 0;
}

en lugar de usar (" ") usa los (' ') cuando quieras hacer los case con una variable char

angardo