Hola a todos y desde ya muchas gracias por leer.
Practicando un programmilla en c++ no me toma los case, y lo revise y lo compare
con el original y no le veo el error
//Simulacion de una calculadora
//Preprosesador
#include <iostream>
#include <limits>
using namespace std;
//Declaracion de funciones
int menu(void);
double leerDato();
//Funcion principal
int main()
{
double dato1 = 0, dato2 = 0, resultado = 0;
int operacion = 0;
while(true)
{
operacion = menu();
if(operacion != 5)
{
//leer datos
cout << "Ingrese dato1: "; cin >> dato1;
cout << endl <<"Ingrese dato2: "; cin >> dato2;
//realizar la operacion
switch(operacion)
case 1:
resultado = dato1 + dato2;
break;
case 2:
resultado = dato1 - dato2;
break;
case 3:
resultado = dato1 * dato2;
break;
case 4:
if(dato2 == 0)
{
cout << "El divisor no puede ser 0" << endl;
}
else
{
resultado = dato1 / dato2;
break;
}
}
}
}
int menu()
{
int op;
cout << "Sumar - |" << endl;
cout << "Restar - 2" << endl;
cout << "Multiplicar - 3" << endl;
cout << "Dividir - 4" << endl;
cout << "Salir - 5" << endl;
cout << "Seleccione la operacion deseada: ";
op = static_cast<int>(leerDato());
while(op < 1 || op > 5)
{
return op;
}
}
double leerdato()
{
double dato = 0.0;
cin >> dato;
while(cin.fail()) // si el dato es incorrecto limpiar el buffer y volverlo a leer
{
cout << '/a';
cin.clear();
cin.ignore(numeric_limits<int>::max(), '/n');
return dato;
}
}
Ya lo solucione, me avia comido con corchete. Pero ahora me dice undefine reference to 'leerDato()'
Faltan las llaves al switch (http://www.cplusplus.com/doc/tutorial/control/ (http://www.cplusplus.com/doc/tutorial/control/)). Por cierto, todas las funciones que tienes declaradas deben devolver un valor; la función menu tiene que devolver un número entero al igual que la función leerDato y por supuesto main.
Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
Solucionado, faltaba mayuscula.
También. A propósito, fíjate aquí:
cout << '/a';
cin.clear();
cin.ignore(numeric_limits<int>::max(), '/n');
Supongo que /a y /n los utilizas como secuencias de escape. En este caso estaría mal, dado que la barra vertical es al revés (\a y \n).