Estoy empezando en C y necesito ayuda. Estoy haciendo un programa que me pida una operación y segun la operación que escoja, haga esa operación con dos numeros que me pide. Este es el código:
//Este es mi tercer programa echo en C
main()
{
int o, a, b, r;
printf ("¿Que operación desea realizar?: (x = multiplicar; / = dividir; + = sumar; - = restar)\n");
scanf("%d",&o);
if (o= "x")
printf ("Ha elegido multiplicar. Escriba el primer número:\n");
scanf("%d",&a);
printf ("Escriba el segundo número:\n");
scanf("%d",&b);
r=a*b;
printf ("El resultado de la operación es:%d\n",r);
}
El problema es que luego, cuando lo ejecuto me sale lo siguiente:
¿Que operación desea realizar?: (x = multiplicar; / = dividir; + = sumar; - = restar)
x
Ha elegido multiplicar. Escriba el primer número:
Escriba el segundo número:
El resultado de la operación es:-2064563936
-----Como ven me pregunta que que operación deseo realizar, y yo le contesto x, pero apartir de aí, todo me sale automático, y no me pregunta numeros>>y encima sale ese numero como reultado.
Utilizo GCC en Ubuntu.
Cuando escribe scanf(%d", &o) estas hacendo lecture de n dígitos (a partir de lo primer dígitos)
"31093aafeofae[enter]" va a leer 31093, pero el 'aafeofae[enter]' continuará em el 'standard input' (la entrada estándar)
Em su caso, lo [enter] es lido en el segundo 'scanf' porque permanece en la entrada estándar. Una opción es 'scanf("%d\n", &o)' otra es leer una cadena después de leer lo entero.
Como puedo ponerlo pues porfavor?¿ (un ejemplo de código de agradecería) ;D
Hola
Tienes muchos fallos:
-Te faltan los #include, en este caso sólo haría falta <stdio.h>
-main debe devolver un int, por tanto la declaración debe ser "int main" con el return al final
-Para leer una letra mejor utiliza una variable tipo char
-Las comparaciones se hacen con "==" no con "="
-Para comparar número no hacen falta comillas "x"
-Todo lo que quieras que esté dentro del if debe ir entre llaves { }
No sé si faltará algo
Aquí tienes un ejemplo
#include <stdio.h>
int main()
{
int a, b, r;
char o;
printf ("Que operacion desea realizar?:\n\t x = multiplicar\n\t / = dividir\n\t + = sumar\n\t - = restar\n");
scanf("%c",&o);
if (o == 'x')
{
printf ("Ha elegido multiplicar. Escriba el primer numero:\n");
scanf("%d",&a);
printf ("Escriba el segundo numero:\n");
scanf("%d",&b);
r=a*b;
printf ("El resultado de la operacion es:%d\n",r);
}
return 0;
}
Saludos
Gracias por lo de los fallos; y solo una cosa. A mí el scanf me ha funcionado sin incluir la biblioteca, por que¿?¿
Hola
Pues seguramente porque usas un IDE como borland o Dev-C++, verdad??
Saludos
No uso un IDE, si no el compilador GCC en ubuntu>>
Si estas utilizando gcc deberías llamarlo mediante la linea de comandos:
gcc -c -ansi -pedantic -Wall -O entrada -o salida
Donde "entrada" es el archivo de código fuente y "salida" es el nombre de la aplicación resultante. Si lo haces así el compilador se ejecutara en su modo mas estricto y esa es la forma mas fácil de detectar (una buena parte de) los errores en el programa.
En tu caso las llamadas a scanf sin incluir el encabezado <stdio.h>" funciona" ya que todas las llamadas son similares pero si existieran variaciones se generaría "comportamiento no definido", en español cualquier cosa puede pasar desde el programa funcionando correctamente hasta el (usual) el programa reventando.
Un saludo
ok, gracias :D