Dev - C++ - Ayuda con calculadora de Numeros romanosc,c++

   
Vista:

Ayuda con calculadora de Numeros romanosc,c++

Publicado por Moisés (2 intervenciones) el 06/07/2016 03:38:25
Ayuda porfavor, de esto depende si paso o no una materia D: son 3 cosas...
1.- Necesito que el programa tenga una opcion al inicio de ¿Cuantos operaciones quieres hacer? y pues ya dependiendo de lo que ponga... pues se ejecute esas veces....
2.- No se como hacerle para que tenga los numeros como XIX= 19 .... porque cuando le pongo XIX me da 21... osea lo suma... no se como hacer eso de que se reste....
3.-No se porque pero se ejecuta bien el programa y todo pero por alguna razon al final siempre dice que dejo de funcionar....
¿Como se usa? Ingresa el numero en romano seguido de un punto y presiona enter ejem: XV.

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
292
293
294
295
296
297
298
299
300
301
302
303
#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
 
 
using namespace std;
 
void romanrecorder_1();
void romanrecorder_2();
void romanprinter_1();
void romanprinter_2();
void operation();
void roman_translator();
void exitprogram();
char opsign;
char I,V,X,L,C,D,M;
char letter_1;
char letter_2;
 
int a; int Ia;
int b; int Vb;
int c; int Xc;
int d; int Ld;
int e; int Ce;
int f; int Df;
int g; int Mg;
int first_number;
int second_number;
int total;
int romantotal;
 
char roman_array[100];
int main()
{
 
printf(" *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* \n");
printf(" *-*-*-*-*-*-*-* CALCULADORA DE ROMAN NUMBERS *-*-*-*-*-*-*-*-\n");
printf(" *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*\n ");
 
a=0;
b=0;
c=0;
d=0;
e=0;
f=0;
g=0;
 
printf("Ingrese el primer numero seguido de un punto, despues presione enter(.): ");
 
romanrecorder_1();
 
 
}
void romanrecorder_1()
{
cin>>letter_1;
if (letter_1=='I')
{
a++;
return romanrecorder_1();
}
else if (letter_1=='V')
{
b++;
return romanrecorder_1();
}
else if (letter_1=='X')
{
c++;
return romanrecorder_1();
}
else if (letter_1=='L')
{
d++;
return romanrecorder_1();
}
else if (letter_1=='C')
{
e++;
return romanrecorder_1();
}
else if (letter_1=='D')
{
f++;
return romanrecorder_1();
}
else if (letter_1=='M'){
g++;
return romanrecorder_1();
}
else
{
romanprinter_1();
}
 
}
void romanprinter_1()
{
Ia=1*a;
Vb=5*b;
Xc=10*c;
Ld=50*d;
Ce=100*e;
Df=500*f;
Mg=1000*g;
 
first_number=Ia+Vb+Xc+Ld+Ce+Df+Mg;
printf("\n El primer numero es %d \n",first_number);
a=0;
b=0;
c=0;
d=0;
e=0;
f=0;
g=0;
printf("Ingrese el segundo numero seguido de un punto, despues presione enter(.):");
romanrecorder_2();
 
}
void romanrecorder_2()
{ cin>>letter_2;
if (letter_2=='I')
{
a++;
return romanrecorder_2();
}
else if (letter_2=='V')
{
b++;
return romanrecorder_2();
}
else if (letter_2=='X')
{
c++;
return romanrecorder_2();
}
else if (letter_2=='L')
{
d++;
return romanrecorder_2();
}
else if (letter_2=='C')
{
e++;
return romanrecorder_2();
}
else if (letter_2=='D')
{
f++;
return romanrecorder_2();
}
else if (letter_2=='M'){
g++;
return romanrecorder_2();
}
else
{
romanprinter_2();
}
 
}
void romanprinter_2()
{
Ia=1*a;
Vb=5*b;
Xc=10*c;
Ld=50*d;
Ce=100*e;
Df=500*f;
Mg=1000*g;
 
second_number=Ia+Vb+Xc+Ld+Ce+Df+Mg;
printf("\n El segundo numero es %d",second_number);
a=0;
b=0;
c=0;
d=0;
e=0;
f=0;
g=0;
 
printf("\n\n");
printf("Ingrese el signo de operacion ( + , - , * o /): ");
operation();
 
}
void operation()
{
cin>>opsign;
if (opsign=='+')
{
total=first_number+second_number;
printf("\n La suma de %d",first_number); printf(" y "); printf(" %d", second_number); printf(" es %d \n",total);
 
}
else if (opsign=='-')
{
if (first_number>second_number)
{
total=first_number-second_number;
}
else if (second_number>first_number)
{
total=second_number-first_number;
}
printf("\n La resta de %d",first_number); printf(" y "); printf(" %d", second_number); printf(" es %d \n",total);
 
}
else if (opsign=='*')
{
total=first_number*second_number;
printf("\n La multiplicacion de %d",first_number); printf(" y "); printf(" %d", second_number); printf(" es %d \n",total);
}
else if (opsign=='/')
{
total=first_number/second_number;
printf("\n La division de %d",first_number); printf(" y "); printf(" %d", second_number); printf(" es %d \n",total);
 
}
printf("\n\n\n");
printf("El valor en romano %d ",total); printf(" es ");
roman_translator();
c=c+1;
}
 
 
void roman_translator()
{
 
romantotal=total+1;
if (romantotal>0)
{
while (romantotal>total)
 
{
if ( total>=1000)
{
total=total-1000;
printf("M");
romantotal=total+1;
return roman_translator();
}
else if (total>=500)
{
total=total-500;
printf("D");
romantotal=total+1;
return roman_translator();
}
else if (total>=100)
{
total=total-100;
printf("C");
romantotal=total+1;
return roman_translator();
}
else if (total>=50)
{
total=total-50;
printf("L");
romantotal=total+1;
return roman_translator();
}
else if (total>=10)
{
total=total-10;
printf("X");
romantotal=total+1;
return roman_translator();
}
else if (total>=5)
{
total=total-5;
printf("V");
romantotal=total+1;
return roman_translator();
}
else if (total>=1)
{
total=total-1;
printf("I");
romantotal=total+1;
return roman_translator();
}
 
else if (total<=0)
{
romantotal=-4;
return roman_translator();
}
 
}
printf("\n\n");
}
 
if(romantotal=0)
{
 
printf("\n\n\n");
 
}
}
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

Ayuda con calculadora de Numeros romanosc,c++

Publicado por agustin (306 intervenciones) el 06/07/2016 17:30:19
De momento te puedo decir que el código que convierte de romano a decimal no está bien, es más lo has planteado mal. Para hacerlo bien lo primero que tienes que tener claro es como se hace eso a mano y creo que no lo tienes muy claro porque lo que haces es contar cada letra y luego sumas los productos de cada letra por el número de aparición es y eso no es asi. Mira lo que pasa cuando se busca en Google. Es la primera que sale: http://www.cquestions.com/2011/08/c-program-to-convert-roman-number-to.html?m=1
Lo primero es solucionar esa parte y luego para hacer operaciones puedes optar por dos caminos.
1- Realizar las operaciones directamente con los números romanos.
2- pasar a enteros, realizar operación y volver a pasar a romano.
Para convertir de entero a romano: http://www.cquestions.com/2011/08/c-program-to-convert-decimal-to-roman.html?m=1
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

Ayuda con calculadora de Numeros romanosc,c++

Publicado por Moisés (2 intervenciones) el 07/07/2016 19:07:16
Muchas gracias , con esa información e logrado hacer otra calculadora completamente diferente y sirve 100% bien, pero ahora tengo un ultimo problema, al meter todo mi programa hasta cierto punto donde imprime el resultado en un ciclo while.... para asi poder hacer lo de ¿Cuantas oepraciones vas a hacer? pasa que la primera operacion la hace bien, pero ya cuando va a hacer la segunda, en el resultado me lo imprime junto con la de la primera.... Por decir
1er operacion XX+XX
= XL

2da operacion XX+XX
= XL XL

Es como si quedara el residuo de la anterior y no se como quitar eso!
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

Ayuda con calculadora de Numeros romanosc,c++

Publicado por agustin (306 intervenciones) el 07/07/2016 22:24:09
Pega el código aquí.
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