Anuncios Google

Problema calculadora C

El problema que tengo es que cuando le doy a copilar con el Dev-C++ antes de poner el resultado en la pantalla se cierra el programa, soy muy novato en esto acabo de empezar, me gustaría que me arreglaran el código. 

 

#include <stdio.h>
main()
{
      int resultados;
      int resultador;
      int resultadom;
      int resultadod;
      int elegir;
      int primero;
      int segundo;
 
      resultados= primero + segundo;
      resultador= primero - segundo;
      resultadom= primero * segundo;
      resultadod= primero / segundo;
 
      printf("Escribe un numero para elegir la operacion\n");
      printf("1.Suma\n");
      printf("2.Resta\n");
      printf("3.Multiplicacion\n");
      printf("4.Division\n");
      scanf("%d", &elegir);
      getcha();
      printf("Escribe el primer numero  ");
      scanf("%d", &primero);
      getchar();
      printf("Escribe el segundo  ");
      scanf("%d", segundo);
      getchar();
      if (elegir == 1) printf("El resultado es %d", resultados);
      if (elegir == 2) printf("El resultado es %d", resultador);
      if (elegir == 3) printf("El resultado es %d", resultadom);
      if (elegir == 4) printf("El resultado es %d", resultadod);
      getchar();
}


Anuncios Google

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Almamu

Para empezar, en el scanf te

Para empezar, en el scanf te falta un & en cada segundo argumento, siempre lo debe de llevar. Sobre lo del switch es de C. Todo lo que han dicho aquí es de C.


Es C

No se si os habeis dado cuenta que no es C++ es C, gracias por todo.

 

¿Me podeis poner el código ya arreglado?

Imagen de joserc87

No se que has visto tú

Pero yo he revisado todos los comentarios y no he visto ni una línea de C++... getchar es una función de C, y lo de int main y switch también es de C...


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de Dioni0396

Esta diciendo que es

C no C++, te has confundido :P

Imagen de joserc87

Y eso es lo que he dicho

Que todo el código que han puesto es C, no C++...

Imagen de joserc87

Errores

Aparte de los que te han dicho (getchar, int main, etc), he visto que le falta un & al scanf de "segundo". Además, los cálculos (resultados= primero + segundo; etc) deberían hacerse después de leer los datos.

Gran parte de los errores que te hemos mencionado te los estará diciendo el compilador. Lee los mensajes de error con detenimiento e intenta "descifrarlos". Sino, te pasarás la vida preguntando por los foros.

Saludos!


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de moikop

No sé si miré el código con

No sé si miré el código con suficiente concentración. Pero a mi me parece que resultado* es null en todos los casos, no? (Dejando de lado la ineficiencia del código, que dado que acabas de empezar con la programación, se puede obviar).


Para recibir ayuda por parte de otros usuarios más rápidamente, recomendamos que pongas títulos descriptivos y no utilices abreviaturas (estilo MSN) en tus post de los foros. Recuerda que accediendo al Manual del perfecto forero y las Normas de la Comunidad aprenderas trucos para resolver tus dudas antes.

No preguntes por MP, mejor pregunta aquí.

Imagen de anxoganso

Prueba esto abajo de todo en

Prueba esto abajo de todo en vez de un getchar pon dos a mi me pasaba algo parecido y me funciono

Imagen de Comandillos

A parte

De que es int main (o void main, como dicen por aquí abajo), que yo sepa, no existe la funcion getcha(), existirá la función getchar(), revisa, que lo has escrito mal.


Imagen de Annubiis

Yo empezaria antes por C

Primero la funcion es int main(void)

Segundo porque no lo haces con un case?

ejemplo:

case 1:

printf("Introduce sumando A: ");

scanf("%i", &primero);

printf("Introduce sumando B: ");

scanf("%i", &segundo);

suma = primero + segundo;

printf("El resultado es: %i", suma);

 

case 2:

....

 

las variables enteras las puedes poner separadas con una coma

int suma, resta, multiplicacion, division;

Imagen de Dioni0396

normal...

no es main() es int main()

Imagen de _Dark_Cloud_

Buenas

Te invito a compilar este simple hello world en codeblocks :P

#include <stdio.h>
 
main(void)
{
  printf("Hello world\n");
  return 0;
}

0 errores y 0 warnings. No se si se puede considerar un error, que los más veteranos en este campo nos lo aclaren xD.

Un saludo ;-).



¡Visca el Barça y Viva España!

Imagen de joserc87

Depende del compilador.

(Y digo del compilador, no del IDE). g++ y gcc por lo visto están preparados para eso, aunque en el lenguaje está establecido que el valor de retorno DEBE ser int. Copio y pego de http://www.zator.com/Cpp/E4_4_4.htm

Algunos compiladores pueden generar un aviso de error si se intenta compilar un programa cuya función main no devuelva un int. Por contra, algunas plataformas pueden provocar fallos cuando estos programas arrancan o a su terminación, ya que esperan un int de retorno.

Vamos, que una cosa es lo que se especifique en el lenguaje y otra lo que decida hacer cada compilador. Probablemente, en compiladores más antiguos hubiese petado (sobre todo para MS-DOS etc, que sí usaba el valor de retorno).

En fin, que aunque se lo funcione de ambas formas, lo mejor siempre es poner int main ()  o int main (int argc, char *argv []) , que no cuesta nada :)


Be pointer my friend...

Dennis Ritchie. Padre de C y cocreador de UNIX.

R.I.P.

 

Imagen de _Dark_Cloud_

Buenas

Muchas gracias por la aclaración, no sabía si era cosa del IDE o del compilador. Un saludo ;-).

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.