0
I am making a program in C++ that must generate three numbers and organize them according to the user’s choice, two options are provided and he must choose one, but I don’t know how to make the menu ask for a valid choice and give the options again if the user chooses an invalid option, I tried to use while and while, but only got him to read the variable again and execute the sort. This is the code without my attempts with the loop of repetition:
#include <locale.h>
#include <stdlib.h>
#include <stdio.h>
int main(void){
setlocale(LC_ALL,"");
int x,y,z,escolha;
printf("Digite três valores inteiros para X, Y e Z\n");
scanf ("%d", &x);
printf("X é igual a: %d\n",x);
scanf("%d", &y);
printf("Y é igual a: %d\n",y);
scanf("%d", &z);
printf("Z é igual a: %d\n",z);
printf("Escolha uma das ordenações: \n1-Ordem não decrescente;\n2-Ordem não crescente.");
scanf("%d", &escolha);
switch (escolha){
case 1:
printf("Odernação escolhida: Não decrescente.\n");
// Quando X e Y > Z
if ((x>y) && (y>z) || (y>x) && (x>z)){
printf("Em ordem não decrescente, temos: Z (%d), Y (%d) e X (%d).\n",z,y,x);
}
// Quando X e Z > Y
else if ((x>z) && (z>y) || (z>x) && (x>y)){
printf("Em ordem não decrescente, temos: Y (%d), Z (%d) e X (%d).\n",y,z,x);
}
// Quando Y e Z > X
else if ((y>z) && (z>x) || (z>y) && (y>x)){
printf("Em ordem não decrescente, temos: X (%d), Z (%d) e Y (%d).\n",x,z,y);
}
break;
case 2:
printf("Odernação escolhida: Não crescente.\n");
// Quando X e Y < Z
if ((x<y) && (y<z) || (y<x) && (x<z)){
printf("Em ordem não crescente, temos: Z (%d), Y (%d) e X (%d).\n",z,y,x);
}
// Quando X e Z < Y
else if ((x<z) && (z<y) || (z<x) && (x<y)){
printf("Em ordem não crescente, temos: Y (%d), Z (%d) e X (%d).\n",y,z,x);
}
// Quando Y e Z < X
else if ((y<z) && (z<x) || (z<y) && (y<x)){
printf("Em ordem não crescente, temos: X (%d), Z (%d) e Y (%d).\n",x,z,y);
}
break;
default:
printf("Opção inválida, tente novamente\n");
}
return 0;
system("PAUSE");
}