/*Calculadora sencilla en C++*/
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
#include <cmath>
#include <iomanip>
using std::setw;
using std::setprecision;
using std::setfill;
#include <vector>
using std::vector;
#include <Windows.h>
/*
TABLA DE FUNCIONES MIEMBRO ACCESIBLES POR OBJETOS
-------------------------------------------------
OBJETO TIPO DE FUNCIÓN
-------------------------------------------------
const const
static const , static
*/
class obj {
friend inline void setAnswer(obj &, int *);
private:
int answer;
public:
inline void sumar() const;
inline void restar() const;
inline void multiplicar() const;
inline void dividir() const;
inline void raiz() const;
inline void potencia() const;
inline void logaritmo() const;
obj() {
if (answer == 1)
sumar();
else
if (answer == 2)
restar();
else
if (answer == 3)
multiplicar();
else
if (answer == 4)
dividir();
else
if (answer == 5)
raiz();
else
if (answer == 6)
potencia();
else
logaritmo();
}
~obj() {/*...*/ }
};
inline void setAnswer(obj &objRef, int *valor) {
objRef.answer = *valor;
}
inline void obj::sumar() const {
system("cls");
size_t numero;
cout << "Cuantos numeros desea sumar? ";
cin >> numero;
if (numero < 0) {
cout << "ERR." << endl;
cin.get();
}
else {
vector<int>vectNumeros(numero);
int total = 0;
for (size_t i = 0; i < numero; ++i) {
cout << "\nIntroduce un valor (" << i + 1 << "): ";
cin >> vectNumeros.at(i);
cin.ignore();
total += vectNumeros.at(i);
}
cout << "\a\n\n\tTotal: " << total << endl;
cin.get();
system("cls");
}
}
inline void obj::restar() const {
size_t tamanio;
cout << "Cuantos numeros deseas restar ? ";
cin >> tamanio;
if (tamanio <= 0) {
cout << "ERR" << endl;
cin.get();
}
else {
vector<int> vectorNumeros(tamanio);
int total = 0;
for (size_t i = 0; i < tamanio; i++) {
cout << "\nIntroduce un numero(" << i + 1 << ") : ";
cin >> vectorNumeros.at(i);
cin.ignore();
if (i == 0) {
total += vectorNumeros.at(i);
}
else
total -= vectorNumeros.at(i);
}
cout << "\a\n\n\tTotal: " << total;
cin.get();
system("cls");
}
}
inline void obj::multiplicar() const {
size_t tamanio;
cout << "Introduce los numeros que deseas multiplicar : ";
cin >> tamanio;
if (tamanio <= 0) {
cout << "ERR." << endl;
cin.get();
}
else {
vector<int>vectorNumeros(tamanio);
static int total = 1;
for (size_t i = 0; i < tamanio; i++) {
cout << "\nIntroduce un numero(" << i + 1 << ") : ";
cin >> vectorNumeros.at(i);
cin.ignore();
total *= vectorNumeros.at(i);
}
cout << "\a\n\tTotal: " << total;
cin.get();
system("cls");
}
}
inline void obj::dividir() const {
size_t tamanio = 2; //Solo dejo dividir dos numeros
vector<int>almacenNumeros(tamanio);
for (size_t i = 0; i<tamanio; i++) {
if (i == 0)
cout << "Introduce el numerador : ";
else
cout << "Introduce el denominador : ";
cin >> almacenNumeros.at(i);
}
int total = almacenNumeros.at(0) / almacenNumeros.at(1);
cout << endl << "\n\t\aEl resultado de la division es : " << total << endl;
cin.get();
system("cls");
}
inline void obj::raiz() const {
double resultado;
double valor;
cout << "Introduce un numero : ";
cin >> valor;
cin.ignore();
resultado = sqrt(valor);
cout << "El resultado de la operacion es " << resultado;
cin.get();
system("cls");
}
inline void obj::potencia() const {
double base;
int exponente;
cout << "Introduce la base y el exponente : ";
cin >> base >> exponente;
cin.ignore();
double resultado = pow(base, exponente);
cout << "\t\aEl resultado es : " << resultado << endl;
cin.get();
system("cls");
}
inline void obj::logaritmo() const {
double argumento;
cout << "Introduce el argumento para el logaritmo de base 10: ";
cin >> argumento;
cin.ignore();
double resultado = log10(argumento);
cout << "\t\aEl resultado del logaritmo en base 10 de " << argumento << " es : " << resultado;
cin.get();
system("cls");
}
int main(void)
{
char valorCentinela;
char *control = &valorCentinela;
int contador = 0;
while (valorCentinela != '-') {
int respuesta = NULL;
obj Objeto;
//MENÚ
if (contador>0) {
system("cls");
cout << "PULSE '-' PARA SALIR U OTRA TECLA PARA CONTINUAR: ";
cin >> *control;
cin.ignore();
system("cls");
}
if (valorCentinela == '-') {
//...
}
else {
cout << setw(31) << setfill('-') << '-' << " CALCULADORA C++ " << setw(31) << setfill('-') << '-' << endl;
cout << "\n\t1- SUMA" << endl;
cout << "\t2- RESTA" << endl;
cout << "\t3- PRODUCTO" << endl;
cout << "\t4- COCIENTE" << endl;
cout << "\t5- RAIZ CUADRADA" << endl;
cout << "\t6- EXPONENTE" << endl;
cout << "\t7- LOGARITMO" << endl;
cout << endl << "\t\tSELECCION: ";
cin >> respuesta;
cin.ignore();
int *respuestaPtr = &respuesta;
bool comprobadorIlegal = false;
if (*respuestaPtr > 0 && *respuestaPtr <= 7)
comprobadorIlegal = false;
else
comprobadorIlegal = true;
switch (comprobadorIlegal) {
case 1: //1 = true
//case true: ERR -> value 1 is already used
cout << "\a\n\tSE INTRODUJO UN VALOR INESPERADO." << endl;
system("pause");
return 1;
break;
default:
setAnswer(Objeto, respuestaPtr);
break;
}
contador++;
}
}
system("cls");
cout << "\aCerrando el programa...";
cin.get();
return 0;
}
//FIN DEL PROGRAMA