Я должен был выполнить это упражнение: написать программу на C, чтобы напечатать диаграмму частот на экране.
Вход и выход: программа получает на вход последовательность троек (число, частота, символ). Для каждой последовательности следует напечатать косую черту, создав график, как в примере ниже.
Пример Для ввода
(5,12, -) (4,17, -) (2,1, -) (1,19, +)
программа должна напечатать
5 | ------------ 12
4 | ----------------- 17
2 | -
1 | +++++++++++++++++++ 19
Я понимаю, что, если я помещаю пробел перед предложением в функции scanf, это работает очень хорошо, но программа не завершается, когда это ожидалось
int main()
{
int x, b, i, u;
char n;
do{
u = scanf(" (%d,%d,%c)", &x, &b, &n);
printf("%d |", x);
for (i = 0; i < b; i++){
printf("%c", n);
}
printf(" %d\n", b);
}while(u == 3);
}
Ожидалось, что, когда scanf не прочитает 3 вещи, которые он должен был сделать, цикл while заканчивается, и программа завершается. Но, когда это произойдет, он все еще ждет нового ввода. Как мне это исправить?