Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: josevc en 30 Octubre 2012, 22:03 PM

Título: Duda en "if"
Publicado por: josevc en 30 Octubre 2012, 22:03 PM
Buenas soy nuevo en este mundo del C, haber si alguien de por aquí me puede echar una mano.

Estoy tratando de hacer el siguiente ejercicio:

Realiza un programa que lea dos números por teclado y a continuación un carácter que indique la operación aritmética a realizar con ellos(+ - * /). El programa devuelve, por pantalla, el resultado de dicha operación.

Comencé así:


#include <stdio.h>

int main(){
int a,b;
char oper;
puts("Introduce dos valores\n");
scanf("%d %d",&a,&b);
fflush(stdin);
puts("Introduce un caracter");
scanf("%c",&oper);


Lo que se me ocurre es poner, "si oper = +, entonces hacer a+b" y lo mismo para las otras 3 operaciones (* , - , /)

Pero ahí mi duda:

if(oper=+)
{

}


Este último código estaría mal planteado, ¿cierto? ¿Como podría hacerlo?

Os agradecería que me orientaseis :)

Un saludo.
Título: Re: Duda en "if"
Publicado por: avesudra en 30 Octubre 2012, 22:11 PM
Hola josevc , está bien planteado solo que , como creo que puedo suponer, sabes que los caracteres en realidad son números designados por una codificación , en el caso de C , por ASCII , así el + sólo no lo puedes poner para comparar , lo tendrías que englobar con unas comillas simples para hallar el valor decimal.
Quedaría así:
Código (cpp) [Seleccionar]
if(oper == '+')
{

}
Título: Re: Duda en "if"
Publicado por: NeoB en 30 Octubre 2012, 22:13 PM
Para comparar un carácter debes encerrarlo en comillas simples: if ( oper == '+' )
Además, fflush() espera un stream de salida, y tu lo estás usando con stdin. Usa otros modos, de otra manera, el comportamiento no está definido.
Título: Re: Duda en "if"
Publicado por: josevc en 30 Octubre 2012, 22:26 PM
Muchas gracias por vuestros comentarios  ;D
Título: Re: Duda en "if"
Publicado por: rir3760 en 31 Octubre 2012, 01:17 AM
En lugar de "fflush(stdin);" puedes utilizar " %c" en la llamada a "scanf" para leer el operador. De esta forma:
puts("Introduce dos valores\n");
scanf("%d %d", &a, &b);

puts("Introduce un caracter");
scanf(" %c", &oper);


Un saludo