[SOLUCIONADO][C++] Programa: Dev C++ | Asunto: Error de compilación y ejecución.

Iniciado por Ditarex, 7 Mayo 2014, 05:07 AM

0 Miembros y 1 Visitante están viendo este tema.

Ditarex

Hola a todos, soy nuevo en este foro y quise venir a preguntar a pedir ayuda a un caso de que en el compilador que uso, el Dev C++, he estado trabajando en un proyecto de ir haciendo algo cada vez mas complicado para mi nivel, soy aprendiz en c++ por eso, aquí pasaré el código de mi proyecto, y no me tira ningún error de sintaxis.

Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

bool mala_opcion = false;


int x;
int y;
int eleccion;

void sumar(int, int);
void restar(int, int);
void multiplicar(int, int);
void dividir(int, int);

int main(){
cout << "------C A L C U L A D O R A------" << endl;
while(!mala_opcion){
cin >> eleccion;
switch(eleccion){
case 1:
int x;
int y;
cout << "\n\n  Introduzca el valor 'x': " << endl;
cin >> x;
cout << "\n\n  Introduzca el valor 'y': " << endl;
cin >> y;
sumar(x, y);
mala_opcion = true;
break;
case 2:
cout << "\n\n  Introduzca el valor 'x': " << endl;
cin >> x;
cout << "\n\n  Introduzca el valor 'y': " << endl;
cin >> y;
restar(x, y);
mala_opcion = true;
break;
case 3:
cout << "\n\n  Introduzca el valor 'x': " << endl;
cin >> x;
cout << "\n\n  Introduzca el valor 'y': " << endl;
cin >> y;
multiplicar(x, y);
mala_opcion = true;
break;
case 4:
cout << "\n\n  Introduzca el valor 'x': " << endl;
cin >> x;
cout << "\n\n  Introduzca el valor 'y': " << endl;
cin >> y;
dividir(x, y);
mala_opcion = true;
break;
default:
cout << "\n  Has introducido un comando incorrecto, vuelva a repetir." << endl;
break;
}
}
cin.get();
return 0;
}

void sumar(int, int){
cout << "\n\nResultado de la Suma:  " << x + y << endl;
}

void resta (int, int){
cout << "\n\nResultado de la Resta:  " << x - y << endl;
}

void multiplicar(int, int){
cout << "\n\nResultado de la Multiplicacion:  " << x * y << endl;
}

void dividir(int, int){
cout << "\n\nResultado de la Division:  " << x / y << endl;
}


Aqui error que me da al compilar y ejecutar el código:



Necesitaria ayudar si es posible, que alguien sepa solucionar este error, llevo algun tiempo en que cuando hago proyectos grandes no me compila y tampoco ejecuta por la misma razón.

Por adelantado, Muchas gracias.

Saludos.


Vaagish

Declaras la función restar en la linea 13, la invocas en la linea 37, pero la implementas como resta en la linea 69.
Debería llamarse como esta declarada..

El otro error dice que el programa termino con -1 (error), ojo con dividir entre 0.
A simple vista no veo otro error..

Saludos!

Ditarex

Cita de: Vaagish en  7 Mayo 2014, 05:16 AM
Declaras la función restar en la linea 13, la invocas en la linea 37, pero la implementas como resta en la linea 69.
Debería llamarse como esta declarada..

El otro error dice que el programa termino con -1 (error), ojo con dividir entre 0.
A simple vista no veo otro error..

Saludos!
Al parecer el error que me daba error, que devolvia -1, no me avisaba del error de que la funcion era incorrecta porque se ve que arriba la estaba declarando de una forma y la llamaba con otro nombre, no revisé que arriba ponia restar, y abajo resta, muchisimas gracias, ya me funciona la calculadora, y ya esta todo resuelto, simplemente era esto :O  :D, de verdad estaba tan confuso que no podia ver algo logico asi, muchas gracias :)

rir3760

Otras partes que se deben cambiar:

* Las variables "x" y "y" deben ser locales a la función main, tienes la declaración de estas duplicadas al inicio del programa y en la sentencia switch.

* Faltan los nombres de los parámetros de las funciones.

* Todos los casos inician con:
Código (cpp) [Seleccionar]
cout << "\n\n  Introduzca el valor 'x': " << endl;
cin >> x;
cout << "\n\n  Introduzca el valor 'y': " << endl;
cin >> y;

Hay que sacar ese bloque y colocarlo dentro de un condicional, de esta forma:
Código (cpp) [Seleccionar]
bool mala_opcion = false;
while (!mala_opcion){
   cin >> eleccion;
   
   if (eleccion >= 1 && eleccion <= 4){
      cout << "\n\n  Introduzca el valor 'x': " << endl;
      cin >> x;
      cout << "\n\n  Introduzca el valor 'y': " << endl;
      cin >> y;
      mala_opcion = true;
   }
   switch (eleccion) {
   case 1:
      sumar (x, y);
      break;
   case 2:
      restar (x, y);
      break;
   case 3:
      multiplicar (x, y);
      break;
   case 4:
      dividir (x, y);
      break;
   default:
      cout << "\n  Has introducido un comando incorrecto, vuelva a repetir." << endl;
      break;
   }
}


Un saludo
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