C++ (C+;+;数组问题)我想打印出我通过DoWhile过程中输入的数字代码订购的食品

C++ (C+;+;数组问题)我想打印出我通过DoWhile过程中输入的数字代码订购的食品,c++,arrays,do-while,C++,Arrays,Do While,我将输入:(数字是食品代码,是/否表示待办事项) 那么我的预期输出将是 Chicken Fries Hotdog 请看我的代码,它不会打印任何东西。 我的想法是,每次我输入一个数字,它都会触发开关函数,然后一个具有准备值(ex:order2=fries)的变量将存储在数组中。因此,在循环时,我将输入多个订单,并希望将它们打印出来(请参阅上面的预期输出) #包括 使用名称空间std; int main(){ 整数顺序码; int i; 整数极限; char yesno; 字符allorder[1

我将输入:(数字是食品代码,是/否表示待办事项)

那么我的预期输出将是

Chicken
Fries
Hotdog
请看我的代码,它不会打印任何东西。 我的想法是,每次我输入一个数字,它都会触发开关函数,然后一个具有准备值(ex:order2=fries)的变量将存储在数组中。因此,在循环时,我将输入多个订单,并希望将它们打印出来(请参阅上面的预期输出)

#包括
使用名称空间std;
int main(){
整数顺序码;
int i;
整数极限;
char yesno;
字符allorder[10][100];
字符串order1=“Chicken”;
string order2=“薯条”;
字符串order3=“热狗”;
做
{
极限++;
i++;
coutordercode;
开关(订单代码){
案例1:
order1==allorder[i];
打破
案例2:
order2==allorder[i];
打破
案例3:
order3==allorder[i];
打破
}
库泰斯诺;
}
while(yesno=='Y');

对于(i=0;i你不是零初始化i。只是写

int i;
不一定会将i设置为零。当您尝试将i用作数组的索引时,这可能会导致分段错误--i可以是任何东西,因此它可能会超出范围。您需要编写

int i = 0;
限制也一样

而且

应该是那一行。另外,如果要通过一个索引对allorder进行索引,为什么要将allorder声明为10x100,i?删除一个维度。另外,将allorder设置为字符串数组,而不是字符数组,因为您是在为其元素分配字符串

你已经使用C++,所以在存在替代品时没有理由使用旧的C构造。使用向量,而不是char或字符串数组。你可以查找如何使用这些C++特性,这些特性比现在使用的灵活多,而且在很多不同的地方都有能力。我用的


哦,使用缩进!请!:)

你不是零初始化i。只是写

int i;
不一定会将i设置为零。当您尝试将i用作数组的索引时,这可能会导致分段错误--i可以是任何东西,因此它可能会超出范围。您需要编写

int i = 0;
限制也一样

而且

应该是那一行。另外,如果要通过一个索引对allorder进行索引,为什么要将allorder声明为10x100,i?删除一个维度。另外,将allorder设置为字符串数组,而不是字符数组,因为您是在为其元素分配字符串

你已经使用C++,所以在存在替代品时没有理由使用旧的C构造。使用向量,而不是char或字符串数组。你可以查找如何使用这些C++特性,这些特性比现在使用的灵活多,而且在很多不同的地方都有能力。我用的


哦,使用缩进!请!:)

试试这些改进,看看你们进展如何。你们的想法很好,但很多细节你们都弄错了

int i = 0;

int limit = 0;

string allorders[10];

allorders[i] = "Chicken";

allorders[i] = "Fries";

allorders[i] = "Hotdog";

试试这些改进,看看你们进展如何。你们的想法不错,但很多细节你们都弄错了

int i = 0;

int limit = 0;

string allorders[10];

allorders[i] = "Chicken";

allorders[i] = "Fries";

allorders[i] = "Hotdog";


您是否使用调试器调试代码?没有错误,只是根本不打印任何内容。似乎存在逻辑错误。请使用调试器找出没有输出的原因。逐行检查代码以查找行为不符合预期的行。检查每个步骤中的变量值。Oof。这会伤害我的眼睛。请重试要包含缩进,特别是当您要进行多个级别的深度时,请。我认为问题可能是变量的值在数组中没有正确存储,或者是for循环(打印出RPAccess)根本不工作。您是否使用调试器调试代码?没有错误,只是根本不打印任何内容。似乎存在逻辑错误。使用调试器找出没有输出的原因。逐行检查代码以查找行为不符合预期的行。检查每一步中的变量值。Oof。即h这是我的眼睛。请尝试包括缩进,特别是当您要进行多个级别的深度时。我认为问题可能是变量的值没有真正正确地存储在数组中,或者是for循环(打印输出rpocess)一点也不管用。他有两个维度,因为它超过了字符,他想存储一个字符串数组(并且使用了错误的代码)。我明白你说的其他事情,但是你说的“如果你用一个索引来索引它,那么allorder为10x100是什么意思?删除其中一个维度”好的,你声明allorder为char[10][100]。这使它成为一个二维数组。这意味着您(通常)使用两个索引来访问它,如allorder[i][j]。您尝试使用一个索引来访问它,如allorder[i]。这意味着您应该将它设置为一个一维字符串数组。如“string allorder[100];”.是的,你是对的。看起来我以前用解决方案搜索了错误的线程。应该早点问。他有两个维度,因为它超过了字符,他想存储一个字符串数组(并且使用了错误的代码)。我知道你说的其他事情,但是你的意思是什么“如果您通过一个索引对其进行索引,则将allorder设置为10x100?删除其中一个维度”好的,您将allorder声明为char[10][100]。这使它成为一个2D数组。这意味着您(通常)使用两个索引访问它,如allorder[i][j]。您尝试仅使用一个索引,如allorder[i]访问它。这意味着您应该将其设置为一维字符串数组。例如“字符串allorder[100];”。是的,您是对的。看起来我以前用解决方案搜索了错误的线程。应该早点在这里询问。