我有這個代碼,我不能離開'elegir()'函數'while'循環。當輸入不好時,它會一直循環。我知道如果有其他條件,我可以完成它,但我想知道是否有可能使它與'while'一起運行。謝謝。功能檢查有效輸入,循環重複連續
Code here:
#include "stdafx.h"
#include <iostream>
int const strsize = 100;
struct bop {
char fullname[strsize]; // real name
char title[strsize]; // job title
char bopname[strsize]; // secret BOP name
int preference; //89 0 = fullname, 1 = title, 2 = bopname
};
char elegir();
using namespace std;
int main(){
bop miembros[3] = {
{
"Luciano",
"Doctor",
"Zahyr",
1
},
{
"Sabrina",
"Licenciada",
"Mumu",
2
},
{
"Andres",
"Verdulero",
"Uruguayo",
0
}
};
cout
<< "Elija como desea que se muestren los miembros de la 'Orden':" << endl
<< "a) Por nombre b) Por titulo\n"
"c) Por nombre secreto d) Por la eleccion del miembro\n";
char eleccion;
eleccion = elegir();
while (eleccion == 'a' || eleccion == 'b' || eleccion == 'c' || eleccion == 'd'){
switch (eleccion){
case 'a' : cout << "Mostrando miembros por 'Nombre':\n";
for (int x=0;x<3;x++){
cout << miembros[x].fullname << endl;
}; break;
case 'b' : cout << "Mostrando miembros por 'Titulo':\n";
for (int x=0;x<3;x++){
cout << miembros[x].title << endl;
}; break;
case 'c' : cout << "Mostrando miembros por 'Nombre secreto':\n";
for (int x=0;x<3;x++){
cout << miembros[x].bopname << endl;
}; break;
case 'd' : cout << "Mostrando miembros por preferencia del miembro: \n";
for (int x=0;x<3;x++){
if (miembros[x].preference == 0)
cout << miembros[x].fullname << endl;
else if (miembros[x].preference == 1)
cout << miembros[x].title << endl;
else
cout << miembros[x].bopname << endl;
}; break;
}
cin
>> eleccion;
}
return 0;
}
char elegir(){
char e;
cin
>> e;
cin.clear('\n');
while (e != 'a' || e != 'b' || e != 'c' || e != 'd'){
cout << "Eleccion incorrecta, elija nuevamente\n";
cin
>> e;
cin.clear('\n');
}
return e;
}
請通過調試器中運行。這是學習的最佳方式。 – Jagannath 2015-04-04 01:16:40
當輸入有效時,它永遠也卡在... – 2015-04-04 01:17:44
該程序運行良好,除了現在我添加了功能來檢查輸入,它卡在循環中 – 2015-04-04 01:18:29