我使用此功能来搜索用户输入的数字x
。
想法是用户在马拉松中输入跑步者的号码,并且程序输出该号码所属的跑步者的信息。
如果用户输入0,循环也应该结束。
问题在于它既可以在第一次而不是第二次工作,或者根本不工作,只显示runner[0]
的信息。
这是代码(抱歉西班牙语)
void search(race *runner){
int flag = 1;
int x;
while (flag = 1){
cout << "Porfavor entre el numero del corredor, si desea terminar la busqueda entre el numero 0 "<<endl;
cin >> x;
cout << endl;
for (int i = 0; i < size-1; i++){
if (x = runner[i].number)
cout << "El corredor que usted busca es " <<
runner[i].name << " con el numero " << runner[i].number<<endl;
if (x = 0)
flag = 0;
}
}
}
答案 0 :(得分:0)
除了改变
的明显修正while (flag = 1){
到
while (flag == 1){
// ^^^
并改变
if (x = runner[i].number)
到
if (x == runner[i].number)
// ^^^
您可以通过移动检查x
是否等于0
的位置来避免代码中的一些不必要的工作。
// while (flag = 1){
// This is also wrong.
while (flag == 1){
cout << "Porfavor entre el numero del corredor, si desea terminar la busqueda entre el numero 0 "<<endl;
cin >> x;
cout << endl;
if ( x == 0 )
{
flag = 0;
// No need to go through the loop for this case.
}
else
{
for (int i = 0; i < size-1; i++){
if (x == runner[i].number)
cout << "El corredor que usted busca es " <<
runner[i].name << " con el numero " << runner[i].number<<endl;
}
}
}
答案 1 :(得分:0)
现在它应该有效,实际上你会对=
和==
感到困惑,首先要研究如何比较两个元素。
void search(race *runner){
int flag = 1;
int x;
while (flag == 1){
cout << "Porfavor entre el numero del corredor, si desea terminar la busqueda entre el numero 0 "<<endl;
cin >> x;
cout << endl;
for (int i = 0; i < size-1; i++){
if (x == runner[i].number)
cout << "El corredor que usted busca es " <<
runner[i].name << " con el numero " << runner[i].number<<endl;
if (x == 0)
flag = 0;
}
}
}
答案 2 :(得分:0)
您的代码中存在一些简单的错误。您在代码中的三个位置使用=
而不是==
,即
while (flag = 1)
if (x = runner[i].number)
if (x = 0)
将这些更改为
while (flag == 1)
if (x == runner[i].number)
if (x == 0)
您正在做的是,您正在为它们分配这些值而不是检查是否相等。这是许多人犯的常见错误,并且可能变得非常混乱,有时可能会导致无限循环。因此,您应该在开始时检查这些错误。
希望这能解决你的问题。