首页 > 解决方案 > (C++ 数组问题)我想通过在 DoWhile 过程中输入的数字代码打印出我订购的食物

问题描述

我将输入:( 数字是食品代码,Y/N 是是/否表示 do-while)

1
Y
2
Y
3
N

那么我的预期输出将是

Chicken
Fries
Hotdog

请查看我的代码,它不会打印任何内容。我的想法是每次我输入一个数字时,它都会触发开关功能,然后一个具有准备值的变量(例如:order2 = fries)将存储在数组中。所以当循环它时,我会输入多个订单,我想把它们打印出来(见我上面的预期输出)

#include <iostream>
using namespace std;

int main() {
int ordercode;
int i;
int limit;
char yesno;
char allorder[10][100];
string order1="Chicken";
string order2="Fries";
string order3="Hotdog";
do 
{
limit++;
i++;
cout<<" Enter order ";
cin>>ordercode;
switch(ordercode){
    case 1:
        order1 == allorder[i];
        break;
    case 2:
        order2 == allorder[i];
        break;
    case 3:
        order3 == allorder[i];
        break;
}
cout<<"Will you order again?";
cin>>yesno; 
}

while(yesno == 'Y');

for(i = 0; i<limit; i++)
{

    cout <<allorder[i];
    cout<<"\n";
}
}

标签: c++arraysdo-while

解决方案


您没有对 i 进行零初始化。简单地写

int i;

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

int i = 0;

对限制做同样的事情。

还,

allorder[i] = order1;

应该是那条线。此外,如果您按一个索引对其进行索引,为什么要将 allorder 声明为 10x100,我?删除其中一个维度。此外,将 allorder 设置为字符串数组,而不是字符数组,因为您将字符串分配给它的元素。

您已经在使用 C++,因此当存在替代品时,没有理由使用旧的 C 构造。使用向量,而不是字符或字符串数​​组。您可以在很多不同的地方查看如何使用这些 C++ 功能,这些功能比您现在使用的更灵活、更强大。站点 cppreference.com 和 cplusplus.com 是我使用的两个大站点。

哦,使用缩进!请!:)


推荐阅读