elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda en "if"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda en "if"  (Leído 1,539 veces)
josevc

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Duda en "if"
« 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í:


Código:
#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:

Código:
if(oper=+)
{

}

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

Os agradecería que me orientaseis :)

Un saludo.


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda en "if"
« Respuesta #1 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
  1. if(oper == '+')
  2. {
  3.  
  4. }


En línea

Regístrate en
NeoB

Desconectado Desconectado

Mensajes: 69


Ver Perfil
Re: Duda en "if"
« Respuesta #2 en: 30 Octubre 2012, 22:13 pm »

Para comparar un carácter debes encerrarlo en comillas simples:
Código
  1. 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.
En línea

josevc

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Duda en "if"
« Respuesta #3 en: 30 Octubre 2012, 22:26 pm »

Muchas gracias por vuestros comentarios  ;D
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda en "if"
« Respuesta #4 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:
Código
  1. puts("Introduce dos valores\n");
  2. scanf("%d %d", &a, &b);
  3.  
  4. puts("Introduce un caracter");
  5. scanf(" %c", &oper);

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines