Dev - C++ - Calculadora con Menú de Operaciones

   
Vista:

Calculadora con Menú de Operaciones

Publicado por Miguelangel (14 intervenciones) el 02/11/2016 12:41:34
Hola amigos. Iniciando en la programación de c++, planteó el siguiente problema pero el mismo no corre. Un programa que ofrezca un menú de Operaciones matemáticas básicas, donde al ingresar una letra se active la operación asignada. Código hasta el momento. #include <iostream>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
using namespace std;
int main(){
int suma,resta;
char s,r,m,d,o;
 
float a,b,multi,div;
cout<< "Bienvenido al Sumador Automatico"<<endl;
cout<< "Seleccione la operacion a realizar: Suma S,Resta R, Multiplicación M o Division D"<< endl;
cin>> o;
system("cls");
if o=s then
suma=a+b;
if o=r then
resta=a-b;
if o=m then
multi=a*b;
if o=d then
div=a/b;
cout<< "Ahora indique el primer numero de la operacion:"<<endl;
cin>>a;
cout<< "Indique el segundo numero de la operacion:"<<endl;
cin>>b;
if
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Calculadora con Menú de Operaciones

Publicado por agustin (496 intervenciones) el 02/11/2016 19:24:58
Esto esta mal:
if o=s then
Eso parece más visual basic. Además no es necesario crear una variable llamada s.
if( o == 's' )

Buscate algún libro o tutorial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculadora con Menú de Operaciones

Publicado por Miguelangel (14 intervenciones) el 03/11/2016 03:50:01
He mejorado mucho el código sin embargo tengo un problema para hacer repetir el menú.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
# include <math.h>
# include <iomanip>
# include <ctype.h>
using namespace std;
int main(){
char s,r,m,d,o,n;
char rp;
float a,b,resul;
cout<< "Bienvenido al Operador Automatico"<<endl;
cout<< "Seleccione la operacion a realizar: Suma S,Resta R, Multiplicación M o Division D"<< endl;
cin>> o;
system("cls");
cout<< "Ahora indique el primer numero de la operacion:"<<endl;
cin>>a;
system("cls");
cout<< "Indique el segundo numero de la operacion:"<<endl;
cin>>b;
system("cls");
if (o=='s') {
resul=a+b;
}
else
if (o=='r'){
resul=a-b;
}
else
if (o=='m'){
resul=a*b;
}
else
if (o=='d'){
resul=a/b;
}
system("cls");
cout<<"El Resultado de su operacion es:"<<resul<<endl;
{
cout<<"\nDesea otra operacion [enter] o presione [N] para salir?";
rp=toupper(getch());
if (rp=='N') ;
}
return(0);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Calculadora con Menú de Operaciones

Publicado por agustin (496 intervenciones) el 04/11/2016 00:23:52
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <stdlib.h>
# include <ctype.h>
using namespace std;
 
void getval (float *a, float *b){
	system("cls");
    cout<< "Ahora indique el primer  numero de la operacion:"<<endl;
    cin>>*a;
    system("cls");
    cout<< "Indique el segundo numero de la operacion:"<<endl;
    cin>>*b;
    system("cls");
}
 
void showresul (float r){
	cout<<"El Resultado de su operacion es:"<<r<<endl;
}
 
int main(){
    char o;
    char rp;
    float a,b,resul;
 
    do {
        cout<< "Bienvenido al Operador Automatico"<<endl;
        cout<< "Seleccione la operacion a realizar: Suma S, Resta R, Multiplicación M o Division D"<< endl;
        o=cin.get();
        switch (o){
            case 's':
                getval(&a, &b);
                resul=a+b;
                showresul(result);
                break;
            case 'r':
                getval(&a, &b);
                resul=a-b;
                showresul(result);
                break;
            case 'm':
                getval(&a, &b);
                resul=a*b;
                showresul(result);
                break;
            case 'd':
                getval(&a, &b);
                resul=a/b;
                showresul(result);
                break;
            default:
                cout <<"Operacion no valida"<<endl;
        }
        system("cls");
        cout<<"\nDesea otra operacion? <<endl <<[S] para continuar o [N] para salir";
         rp=toupper (cin.get());
    } while  (rp!='N') ;
    return 0;
}
Se puede mejorar mucho pero como veo que recién empiezas mejor no liar mucho más.
No es muy recomendable usar conio y usar system ("cls") te amarra a windows y hace que tu programa no sea portable a otras plataformas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Victorio

Calculadora con Menú de Operaciones

Publicado por Victorio (12 intervenciones) el 04/11/2016 09:11:00
Prueba con esto

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
/*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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar