Dev - C++ - Corrección de ejercicio

 
Vista:
sin imagen de perfil
Val: 66
Ha disminuido su posición en 2 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Corrección de ejercicio

Publicado por Carlos (12 intervenciones) el 23/11/2020 22:40:04
Buenas noches, tengo este algoritmo con menús y solo me falta hacerle una validación pero no sé como hacerla

- La validación es por ejemplo si pongo "a" en el menú principal o cualquier submenú, el queda en un bucle infinito, como valido para que que no pase esto y diga "Digite una opción correcta" (solo una vez) como lo hace con los números

Si alguien me puede ayudar se lo agradecería .

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
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <iostream>
 
void menu(void);
void menu1(void);
void menu1_1(void);
void menu1_2(void);
void menu2(void);
void menu2_1(void);
void menu2_2(void);
void menu2_3(void);
void menu3(void);
void menu3_1(void);
void menu3_2(void);
void menu4(void);
void menu4_1(void);
void menu4_2(void);
void menu4_3(void);
 
using namespace std;
 
int op;
 
main()
{
	do
	{
		menu();
		if (op==1)
		{
        menu1();
		}
		if (op==2)
		{
        menu2();
		}
		if (op==3)
		{
		menu3();
		}
		if (op==4)
		{
		menu4();
		}
	}while (op!=5);
}
 
void menu(void)
{
	fflush(stdin);
	system("cls");
	printf("Menu de opciones\n");
	printf("------------------------------------------------\n");
	printf("1 - Ejercicios matemáticos. \n");
	printf("2 - Ejercicios estructuras repetitivas (ciclos).\n");
	printf("3 - Ejercicios de impuestos.\n");
	printf("4 - Ejercicios para contar.\n");
	printf("5 - Salir");
	printf("\n");
	printf("Digite opcion: ");
	scanf("%d", &op);
	while (op!=1 && op!=2 && op!=3 && op!=4 && op!=5)
	{
		printf("\nOpcion erronea, digite una opcion valida\n");
		scanf("%d", &op);
	}
}
 
void menu1(void)
{
	fflush(stdin);
	system("cls");
	printf("Primer menu de opciones\n");
	printf("-----------------------------------------------------------------------------\n");
	printf("1 - Determinar el cuadrado y el cubo de la suma de un binomio.\n");
	printf("2 - Sumar, restar, multiplicar y dividir el inverso de tres números enteros.\n");
	printf("3 - Salir\n");
	printf("\n");
	printf("Digite opcion: ");
	scanf("%d", &op);
	if (op==1)
	{
		fflush(stdin);
		menu1_1();
	}
	if (op==2)
	{
		fflush(stdin);
		menu1_2();
	}
	if (op==3)
		menu();
	while (op!=1 && op!=2 && op!=3)
	{
		printf("\nOpcion erronea, digite una opcion valida");
		scanf("%d", &op);
	}
	getch();
	menu();
}
 
 
void menu1_1(void)
{
	fflush(stdin);
	float a, b, c;
    cout << "\nA: "; cin >> a;
    cout << "\nB: "; cin >> b;
    cout << "\nC: "; cin >> c;
    cout << "\n(A+B)^2 = " << (a + b) * (a + b);
    cout << "\n(A+B)^3 = " << (a + b) * (a + b) * (a + b);
}
 
void menu1_2(void)
{
	fflush(stdin);
	int num,resto,numInv=0,suma=0,resta,multiplicacion=0,num2,resto2,numInv2=0,num3,resto3,numInv3=0;
	long double division;
 
	cout<<"Digite un numero: "<<endl;
	cin>>num;
	cout<<"Digite un numero: "<<endl;
	cin>>num2;
	cout<<"Digite un numero: "<<endl;
	cin>>num3;
 
	while (num>0)
	{
		resto=num%10;
		num=num/10;
	    numInv=numInv*10+resto;
		resto2=num2%10;
		num2=num2/10;
	    numInv2=numInv2*10+resto2;
		resto3=num3%10;
		num3=num3/10;
	    numInv3=numInv3*10+resto3;
	    suma=numInv+numInv2+numInv3;
	    resta=numInv-numInv2-numInv3;
	    multiplicacion=numInv*numInv2*numInv3;
	    division=numInv/numInv2/numInv3;
	}
 
	cout<<"El primer numero inverso es: "<<numInv<<endl;
	cout<<"El segundo numero inverso es: "<<numInv2<<endl;
    cout<<"El tercer numero inverso es: "<<numInv3<<endl;
    cout<<"La suma es: "<<suma<<endl;
    cout<<"La resta es: "<<resta<<endl;
    cout<<"La multiplicacion es: "<<multiplicacion<<endl;
    cout<<"La division es: "<<division<<endl;
 
	getch();
}
 
 
void menu2(void)
{
	fflush(stdin);
	system("cls");
	printf("Segundo menu de opciones\n");
	printf("--------------------------------------------------------------------\n");
	printf("1 - Mostrar los números primos entre dos números. \n");
	printf("2 - Mostrar los múltiplos de un número dado en un rango determinado.\n");
	printf("3 - Mostrar los múltiplos de 4 y 6 de los primeros 100 números. \n");
	printf("4 - Salir\n");
	printf("\n");
	printf("Digite opcion: ");
	scanf("%d", &op);
	if (op==1)
	{
		fflush(stdin);
		menu2_1();
	}
	if (op==2)
	{
		fflush(stdin);
		menu2_2();
	}
	if (op==3)
	{
		fflush(stdin);
		menu2_3();
	}
	if (op==4)
		menu();
	while (op!=1 && op!=2 && op!=3 && op!=4)
	{
		printf("\nOpcion erronea, digite una opcion valida");
		scanf("%d", &op);
	}
	getch();
	menu();
}
 
void menu2_1(void)
{
fflush(stdin);
 
	int i,num,num2,k,cont=0;
 
	printf("\nDigite el primer rango inferior\n");
	scanf ("%d", &num);
 
	printf("\nDigite el segundo rango superior\n");
	scanf ("%d", &num2);
 
	for (i=num;i<=num2;i=i+1)
	{
		cont=0;
	for (k=1;k<=num2;k++)
	{
	if (i%k==0)
	{
		cont= cont+1;
	}
	}
	if(cont==2)
	{
		printf (" %d ",i);
	}
	}
	getch();
}
 
void menu2_2(void)
{
	int n1,n2,contador=0, num, multi, i;
    cout << "Ingrese el rango inferior: ";
    cin >> n1;
    cout << "Ingrese el rango superior: ";
    cin >> n2;
    cout << "Digite el numero:  ";
    cin >> num;
    {
    for (i=n1;i<=n2;i++)
        if(i%num==0)
		{
		    multi= multi + 1;
        }
    }
    cout << "\nEn total hay " << multi << " multiplos. ";
getch();
}
 
 
void menu2_3(void)
{
	fflush(stdin);
	int m46 = 0;
	    for (int i = 1; i <= 100; i++)
    {
    	if (i % 4 == 0 && i % 6 == 0)
    {
        m46= m46 + 1;
		cout << i << endl;
	}
	}
    cout << "\nMultiplos de 4 y 6: " << m46
         << endl;
}
 
 
void menu3(void)
{
	fflush(stdin);
	system("cls");
	printf("Tercer menu de opciones\n");
	printf("-----------------------------------\n");
	printf("1 - Pago del impuesto de un carro .\n");
	printf("2 - Pago de un trabajador.\n");
	printf("3 - Salir\n");
	printf("\n");
	printf("Digite opcion: ");
	scanf("%d", &op);
	if (op==1)
	{
		fflush(stdin);
	}
	if (op==2)
	{
		fflush(stdin);
		menu3_2();
	}
	if (op==3)
		menu();
	while (op!=1 && op!=2 && op!=3)
	{
		printf("\nOpcion erronea, digite una opcion valida");
		scanf("%d", &op);
	}
	getch();
	menu();
}
 
void menu3_2(void)
	{
		int horast, valorh,impuestos,salariob, salarioa, horaextra=1.5, pagohoraextra;
		float tarifat;
		printf ("\nDigite las horas trabajadas: ");
		scanf ("\n%d", &horast);
		printf ("\n¿Valor de las horas trabajadas?: ");
		scanf ("\n%d", &valorh);
		printf ("\nLa tasa de impuestos es: " );
		scanf ("%d", &impuestos);
 
		salariob = horast * valorh;
		tarifat = salariob * impuestos;
		salarioa = salariob - tarifat;
 
		if (horast > 40)
		{
		pagohoraextra=horast - 40;
		pagohoraextra= pagohoraextra*valorh*horaextra;
		salarioa=salarioa+pagohoraextra;
		}
 
		printf ("\nEl salario del trabajador es: %d", salarioa);
		getch ();
	}
 
void menu4(void)
{
	fflush(stdin);
	system("cls");
	printf("Cuarto menu de opciones\n");
	printf("------------------------------------------------------------------------\n");
	printf("1 - Contar e imprimir los pares, impares y múltiplos de 7 entre 1 y 100.\n");
	printf("2 - Contar e imprimir los múltiplos de 5 y de 8 entre 500 y 600.\n");
	printf("3 - Contar e imprimir los múltiplos de 10 entre -200 y -100.\n");
	printf("4 - Salir\n");
	printf("\n");
	printf("Digite opcion: ");
	scanf("%d", &op);
	if (op==1)
	{
		fflush(stdin);
		menu4_1();
	}
	if (op==2)
	{
		fflush(stdin);
		menu4_2();
	}
	if (op==3)
	{
		fflush(stdin);
		menu4_3();
	}
	if (op==4)
		menu();
	while (op!=1 && op!=2 && op!=3 && op!=4)
	{
		printf("\nOpcion erronea, digite una opcion valida");
		scanf("%d", &op);
	}
	getch();
	menu();
}
 
void menu4_1(void)
{
	fflush(stdin);
	int par = 0, impar = 0, m7 = 0;
	    for (int i = 1; i <= 100; i++)
    {
        if (i % 2 == 0) par++;
        else impar++;
 
        if (i % 7 == 0)
        {
        	m7=m7 + 1;
        	cout << i << endl;
		}
    }
    cout << "\nMultiplos de 7: " << m7
         << "\nImpares: " << impar
         << "\nPares: " << par
         << endl;
}
 
void menu4_2(void)
{
	fflush(stdin);
	int m58 = 0;
	    for (int i = 500; i <= 600; i++)
    {
    	if (i % 5 == 0 && i % 8 == 0)
    {
        m58= m58 + 1;
		cout << i << endl;
	}
	}
    cout << "\nMultiplos de 5 y 8: " << m58
         << endl;
}
 
void menu4_3(void)
{
fflush(stdin);
    int m10 = 0;
    for (int i = -200; i <= -100; i++)
    {
    	if (i % 10 == 0)
	{
		m10= m10 + 1;
		cout << i << endl;
	}
}
    cout << "\nMultiplos de 10: " << m10 << endl;
}
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
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Corrección de ejercicio

Publicado por Alfil (1444 intervenciones) el 24/11/2020 08:50:09
Te pongo la estructura de como debería ser un menú con submenús, fíjate que la variable "opcion" es de tipo char para que recoja los posibles caracteres pulsados por error.

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
#include <iostream>
 
using namespace std;
 
void menu();
void submenu1();
void submenu2();
void submenu3();
void submenu4();
 
int main()
{
    char opcion;
 
    do {
        menu();
        cin >> opcion;
 
        switch (opcion)
        {
            case '1':
                submenu1();
                break;
 
            case '2':
                submenu2();
                break;
 
            case '3':
                submenu3();
                break;
 
            case '4':
                submenu4();
                break;
 
            case '5':
                cout << "\n\nFIN DEL PROGRAMA" << endl;
                break;
 
            default:
                cout << "\n\nOPCION NO VALIDA" << endl;
                break;
        }
 
 
    } while (opcion != '5');
 
    return 0;
}
 
 
void menu()
{
    cout << "\n   MENU PRINCIPAL"
         << "\n======================="
         << "\n1.- Opcion 1"
         << "\n2.- Opcion 2"
         << "\n3.- Opcion 3"
         << "\n4.- Opcion 4"
         << "\n5.- Salir"
         << "\n======================"
         << "\nOPCION (1-5): ";
}
 
void submenu1()
{
    char opcion;
 
    do {
        cout << "\n   SUBMENU 1"
             << "\n======================="
             << "\n1.- Opcion 1"
             << "\n2.- Opcion 2"
             << "\n3.- Opcion 3"
             << "\n4.- Opcion 4"
             << "\n5.- Volver"
             << "\n======================"
             << "\nOPCION (1-5): ";
 
        cin >> opcion;
 
        switch (opcion)
        {
            case '1':
                cout << "\nOpcion 1" << endl;
                break;
 
            case '2':
                cout << "\nOpcion 2" << endl;
                break;
 
            case '3':
                cout << "\nOpcion 3" << endl;
                break;
 
            case '4':
                cout << "\nOpcion 4" << endl;
                break;
 
            case '5':
                break;
 
            default:
                cout << "\n\nOPCION NO VALIDA" << endl;
                break;
        }
 
 
    } while (opcion != '5');
}
 
void submenu2()
{
    char opcion;
 
    do {
        cout << "\n   SUBMENU 2"
             << "\n======================="
             << "\n1.- Opcion 1"
             << "\n2.- Opcion 2"
             << "\n3.- Opcion 3"
             << "\n4.- Opcion 4"
             << "\n5.- Volver"
             << "\n======================"
             << "\nOPCION (1-5): ";
 
        cin >> opcion;
 
        switch (opcion)
        {
            case '1':
                cout << "\nOpcion 1" << endl;
                break;
 
            case '2':
                cout << "\nOpcion 2" << endl;
                break;
 
            case '3':
                cout << "\nOpcion 3" << endl;
                break;
 
            case '4':
                cout << "\nOpcion 4" << endl;
                break;
 
            case '5':
                break;
 
            default:
                cout << "\n\nOPCION NO VALIDA" << endl;
                break;
        }
 
 
    } while (opcion != '5');
}
 
void submenu3()
{
    char opcion;
 
    do {
        cout << "\n   SUBMENU 3"
             << "\n======================="
             << "\n1.- Opcion 1"
             << "\n2.- Opcion 2"
             << "\n3.- Opcion 3"
             << "\n4.- Opcion 4"
             << "\n5.- Volver"
             << "\n======================"
             << "\nOPCION (1-5): ";
 
        cin >> opcion;
 
        switch (opcion)
        {
            case '1':
                cout << "\nOpcion 1" << endl;
                break;
 
            case '2':
                cout << "\nOpcion 2" << endl;
                break;
 
            case '3':
                cout << "\nOpcion 3" << endl;
                break;
 
            case '4':
                cout << "\nOpcion 4" << endl;
                break;
 
            case '5':
                break;
 
            default:
                cout << "\n\nOPCION NO VALIDA" << endl;
                break;
        }
 
 
    } while (opcion != '5');
}
 
void submenu4()
{
    char opcion;
 
    do {
        cout << "\n   SUBMENU 4"
             << "\n======================="
             << "\n1.- Opcion 1"
             << "\n2.- Opcion 2"
             << "\n3.- Opcion 3"
             << "\n4.- Opcion 4"
             << "\n5.- Volver"
             << "\n======================"
             << "\nOPCION (1-5): ";
 
        cin >> opcion;
 
        switch (opcion)
        {
            case '1':
                cout << "\nOpcion 1" << endl;
                break;
 
            case '2':
                cout << "\nOpcion 2" << endl;
                break;
 
            case '3':
                cout << "\nOpcion 3" << endl;
                break;
 
            case '4':
                cout << "\nOpcion 4" << endl;
                break;
 
            case '5':
                break;
 
            default:
                cout << "\n\nOPCION NO VALIDA" << endl;
                break;
        }
 
 
    } while (opcion != '5');
}
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