0

在过去的 5 个小时里,我也尝试编写这个程序,到了一半才意识到我不能使用数组或函数、字符串等。

问题是我还需要创建一个程序来读取由标记值终止的整数值并显示单个数字(0-9)的条形图。该图表显示序列中每个数字的总出现次数。这是我到目前为止所拥有的

编辑:这是我修改后的代码

#include <iostream>
using namespace std;

int main()
{
   //initilise variables
    int num = 0, count0 = 0, count1 = 0,count2 = 0,count3 = 0,count4 = 0, 
count5 =0, count6 = 0,count7 = 0,count8 = 0,count9 = 0, value;
int SENTINEL = -1;

//get numbers till a -1 values has been entered
cout << "Please enter a number: ";
while(num != SENTINEL)
{
    cin >> num;

    //adds each occurrence of number entered
    switch(num)
{
    case 0:
        count0+= 1;
        break;
    case 1:
        count1+= 1;
        break;
    case 2: 
        count2+=1;
        break;
    case 3:
        count3+= 1;
        break;
    case 4:
        count4+= 1;
        break;
    case 5: 
        count5+= 1;
        break;
    case 6:
        count6+= 1;
        break;
    case 7:
        count7+= 1;
        break;
    case 8: 
        count8+= 1;
        break;
    case 9:
        count9+= 1;
        break;
    default:;
}
}

for(int rows = 0; rows < 10; rows++)
{
    cout << endl << rows << " | ";
    for(int c = 0; c < count0; c++)
    {
        {
            cout << "*" ;

        }
    }

}

编辑:

我在为我的列获取 for 循环时遇到问题,也只在一行上输出 *。知道我应该改变什么吗?到目前为止,如果我输入 3 个零(count0=3),它将显示 3 个“*”,但在所有 9 行上。

4

2 回答 2

1

可以做什么:

  1. 用函数和数组编写程序。
  2. 通过将它们的代码放在调用它们的任何位置来擦除函数,记住正确设置参数。
  3. 用 N 个变量替换数组,并用一个巨大的 switch/case 替换它们的访问:

     //arr[i] = 42;
     switch (i) {
     case 0: arr_0 = 42; break;
     case 1: arr_1 = 42; break;
     //...
     }
    

您可以通过使用宏来促进两者,例如使用 Boost.Preprocessor 重复从 0 到 N 的情况

该做什么:说不。告诉您的老师,不使用该语言的最基本功能是胡说八道。但也许等到他接受你的解决方案之后;)

于 2013-04-19T07:46:12.387 回答
0

If you only need to count single digit numbers, then one way to go is to use 10 variables =) int count0, count1... etc... then you have almost array so, you can count input and then output counted values..

于 2013-04-19T07:33:19.033 回答