циклы — Как создать гистограмму в C ++ без функций или массивов

Я провел последние 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 строках.

0

Решение

Если вам нужно только посчитать однозначные числа, то один из способов — использовать 10 переменных =)
int count0, count1 … etc … тогда у вас есть почти массив, так что вы можете посчитать входные и затем вывести подсчитанные значения ..

0

Другие решения

Что ты мог делать:

  1. Напишите программу с функциями и массивами.
  2. Удалите функции, поместив их код везде, где они вызываются, не забудьте правильно задать аргументы.
  3. Замените массивы на N переменных и их доступ с помощью огромного переключателя / регистра:

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

Вы могли бы облегчить оба с помощью макросов, например, используйте Boost.Preprocessor для повторения случаев от 0 до N

Что ты должен делать: Скажи нет. Скажите своему учителю, что глупо не использовать самые основные функции языка. Но, возможно, подожду с этим до тех пор, пока он не примет ваше решение;)

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector