如何在数组的一部分中查找特定值的第一个元素 所以我正在学习C++,我有这个任务,我几乎完成了,但是我陷入了一个非常重要的细节:
因此,作业是一种代码,允许人们预订机票。我必须使用10个元素的数组(因为飞机将有10个座位)-前5个元素表示头等舱,而othr 5表示经济舱;数组元素0表示空座位,元素1表示已预订座位。 (所以飞机[0]=1意味着1号座位已经预订,是头等舱,飞机[8]=0意味着9号座位是免费的,是经济舱) 如果顾客想要头等舱机票,他们按1,如果他们想要经济舱,他们按2。如果所有的座位都订在一个类别中,他们应该可以选择在另一个类别中订票。在任何情况下,当他们预订车票时,应通知他们已预订车票、车票类别以及座位号。如果没有座位,他们应该得到一个通知,“下一班飞机3小时后起飞” 我已经完成了代码,但我有一个问题:如果原始数组的所有元素都等于零,那么它就可以正常工作。但是,只要一个元素等于1,我就会收到通知,所有的座位都被预订在上述类别中 我相信我的错误在于我的“for”循环的开始,但我不能准确地指出它(因为我对这个非常陌生)。 我的“for”循环的目标是一次查看5个特定数组元素,一旦有一个元素等于0,停止,用1替换该值,然后打印票据并退出程序 这就是代码:如何在数组的一部分中查找特定值的第一个元素 所以我正在学习C++,我有这个任务,我几乎完成了,但是我陷入了一个非常重要的细节:,c++,C++,因此,作业是一种代码,允许人们预订机票。我必须使用10个元素的数组(因为飞机将有10个座位)-前5个元素表示头等舱,而othr 5表示经济舱;数组元素0表示空座位,元素1表示已预订座位。 (所以飞机[0]=1意味着1号座位已经预订,是头等舱,飞机[8]=0意味着9号座位是免费的,是经济舱) 如果顾客想要头等舱机票,他们按1,如果他们想要经济舱,他们按2。如果所有的座位都订在一个类别中,他们应该可以选择在另一个类别中订票。在任何情况下,当他们预订车票时,应通知他们已预订车票、车票类别以及座位号。如
#include <iostream>
#include <string>
using namespace std;
int linearSearch(const int[], int, int);
int main() {
const int arraySize = 10;
int plane[arraySize] = {0};
int seat, i;
string answer;
int check = 1;
int level = 5;
int element = linearSearch(plane, check, level);
cout << "Please press 1 for first class and 2 for economy." << endl;
cin >> seat;
switch (seat) {
case 1: {
for (i = 0; i < 5; i++) {
int element = linearSearch(plane, check, level);
if (element == -1) {
plane[i] = 1;
cout << "You have booked a seat at first class, and you are seated "
"at seat number "
<< plane[i] << endl;
break;
} else
cout << "There are no seats available in first class. Would you like "
"a seat at economy class?/n(Type 'yes' to continue and 'no' "
"to exit)"
<< endl;
cin >> answer;
if (answer == "yes") {
for (i = 5; i < 10; i++) {
int element = linearSearch(plane, check, level);
if (element == -1) {
plane[i] = 1;
cout << "You have booked a seat at economy class, and you are "
"seated at seat number "
<< plane[i] << endl;
break;
} else
cout << "There are no seats available. The next flight leaves in "
"3 hours."
<< endl;
break;
}
} else
cout << "There are no seats available. The next flight leaves in 3 "
"hours."
<< endl;
break;
break;
}
break;
}
case 2: {
for (i = 5; i < 10; i++) {
int element = linearSearch(plane, check, level);
if (element == -1) {
plane[i] = 1;
cout << "You have booked a seat at economy class, and you are seated "
"at seat number "
<< plane[i] << endl;
break;
} else
cout << "There are no seats available in economy class. Would you "
"like a seat at first class?/n(Type 'yes' to continue and "
"'no' to exit)"
<< endl;
cin >> answer;
if (answer == "yes") {
for (i = 0; i < 5; i++)
int element = linearSearch(plane, check, level);
if (element == -1) {
plane[i] = 1;
cout << "You have booked a seat at first class, and you are seated "
"at seat number "
<< plane[i] << endl;
break;
} else
cout << "There are no seats available. The next flight leaves in 3 "
"hours."
<< endl;
break;
} else
cout << "There are no seats available. The next flight leaves in 3 "
"hours."
<< endl;
break;
break;
}
break;
}
default:
break;
}
}
int linearSearch(const int Array[], int key, int sizeofArray) {
for (int j = 0; j < sizeofArray; j++) {
if (Array[j] == key)
return j;
}
return -1;
}
#包括
#包括
使用名称空间std;
int linearSearch(常量int[],int,int);
int main(){
常数int arraySize=10;
int平面[arraySize]={0};
内座,i;
字符串回答;
整数检查=1;
智力水平=5;
int元素=线性搜索(平面、方格、标高);
坐椅;
开关(座椅){
案例1:{
对于(i=0;i<5;i++){
int元素=线性搜索(平面、方格、标高);
如果(元素==-1){
平面[i]=1;
cout问题出在您的linearSearch函数中。它为第一个找到的元素返回一个。因此,如果至少一个数组单元格等于1,它将返回所有已预订的单元格,即使所有其他单元格都是空闲的。您应该搜索空闲单元格,而不是预订的单元格。问题出在您的linearSearch函数中。它为第一个找到的元素返回一个因此,如果至少有一个数组单元格等于1,则即使所有其他单元格都是空闲的,也会返回所有已预订的结果。您应该搜索空闲单元格,而不是已预订的单元格。这似乎是不必要的代码量。请提供。请关注最小部分。这也适用于您对问题的解释。因此,您似乎有错过了一个{
在代码中的else之后。这将导致cin>>答案在else之外并始终运行。这可能是问题所在。为什么你要在5个座位上循环,在linearSearch内循环?为什么你在预订之前不检查座位是否售出?@斯塔克检查座位是否售出是个想法,这就是w我正在尝试做的事情(但我显然失败了)…这似乎是不必要的代码量。请提供。请关注最小部分。这也适用于您对问题的解释。因此,您似乎错过了一个{
在代码中的else之后。这将导致cin>>答案在else之外并始终运行。这可能是问题所在。为什么你要在5个座位上循环,在linearSearch内循环?为什么你在预订之前不检查座位是否售出?@斯塔克检查座位是否售出是个想法,这就是w我正在努力做的事情(但我显然失败了)。。。