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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


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

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Ayuda en C
« en: 9 Septiembre 2011, 17:02 pm »

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:
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.


En línea

“Vive rápido, muere joven y deja un bonito cadáver”
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
"Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad."
LearningSpanishProgrammer

Desconectado Desconectado

Mensajes: 67


Ver Perfil
Re: Ayuda en C
« Respuesta #1 en: 9 Septiembre 2011, 17:37 pm »

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.


En línea

Estoy aprendiendo español, y tu estas aprendiendo programación
jhonsc

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Re: Ayuda en C
« Respuesta #2 en: 9 Septiembre 2011, 17:48 pm »

Como puedo ponerlo pues porfavor?¿ (un ejemplo de código de agradecería)  ;D
En línea

“Vive rápido, muere joven y deja un bonito cadáver”
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
"Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad."
satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Ayuda en C
« Respuesta #3 en: 9 Septiembre 2011, 17:48 pm »

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
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int a, b, r;
  6.    char o;
  7.  
  8.    printf ("Que operacion desea realizar?:\n\t x = multiplicar\n\t / = dividir\n\t + = sumar\n\t - = restar\n");
  9.    scanf("%c",&o);
  10.    if (o == 'x')
  11.        {
  12.        printf ("Ha elegido multiplicar. Escriba el primer numero:\n");
  13.        scanf("%d",&a);
  14.        printf ("Escriba el segundo numero:\n");
  15.        scanf("%d",&b);
  16.        r=a*b;
  17.        printf ("El resultado de la operacion es:%d\n",r);
  18.        }
  19.  
  20.    return 0;
  21. }
  22.  

Saludos
« Última modificación: 9 Septiembre 2011, 17:50 pm por satu » En línea

Breakbeat como forma de vida
jhonsc

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Re: Ayuda en C
« Respuesta #4 en: 9 Septiembre 2011, 18:05 pm »

Gracias por lo de los fallos; y solo una cosa. A mí el scanf me ha funcionado sin incluir la biblioteca, por que¿?¿
En línea

“Vive rápido, muere joven y deja un bonito cadáver”
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
"Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad."
satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: Ayuda en C
« Respuesta #5 en: 9 Septiembre 2011, 19:26 pm »

Hola

Pues seguramente porque usas un IDE como borland o Dev-C++, verdad??

Saludos
En línea

Breakbeat como forma de vida
jhonsc

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Re: Ayuda en C
« Respuesta #6 en: 9 Septiembre 2011, 23:20 pm »

No uso un IDE, si no el compilador GCC en ubuntu>>
En línea

“Vive rápido, muere joven y deja un bonito cadáver”
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
"Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad."
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda en C
« Respuesta #7 en: 10 Septiembre 2011, 02:50 am »

Si estas utilizando gcc deberías llamarlo mediante la linea de comandos:
Código:
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
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
jhonsc

Desconectado Desconectado

Mensajes: 43


Ver Perfil
Re: Ayuda en C
« Respuesta #8 en: 10 Septiembre 2011, 14:09 pm »

ok, gracias  :D
« Última modificación: 12 Septiembre 2011, 16:36 pm por jhonsc » En línea

“Vive rápido, muere joven y deja un bonito cadáver”
"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas."
"Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad."
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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