Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main()
- {
- int c, i, summcount, savenum; // переменная для организации чтения потока, коунтер цикла, техническая переменная для проверки окончания построения гистограммы, техническая переменная для отбрасывания пустого цикла
- int symbinword[10000]; // массив для построения гистограммы
- for (i = 0; i <= 10000; ++i) symbinword[i] = 0; // обнуление массива
- i = 0; // обнуление коунтера
- summcount = 0; // обнуление технической переменной
- while ((c = getchar()) != EOF) { // Цикл действующий до значения конца файла.
- if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) ++symbinword[i]; // Если буква, инкримирует ячейку массива
- else { // Иначе
- ++i; // инкримирует коунтер
- while (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))) { //Пока не встретит букву
- c = getchar(); // Запрашивает символ для чтения
- if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) ++symbinword[i]; //Если встречает букву, инкримирует уже новую ячейку(костыль).
- }
- }
- }
- for (i = 0; i <= 10000; ++i) { // После конца файла, ищет значение коунтера, после которого все ячейки имеют внутри ноль.
- if (symbinword[i] != 0) savenum = i; // Сохраняет значение коунтера.
- }
- while (summcount != -1) { // Условие, если сумма всех ячеек массива -1, цикл завершается.
- summcount = 0; // обнуляем сумму каждый раз при запуске цикла.
- for (i = 0; i <= savenum; ++i) { // Крутим задействованные ячейки массива
- if (symbinword[i] != 0) printf("|"); //Если ячейка не пуста, принтим 1 часть гистограммы.
- else printf(" "); // Если пуста, ставим пробел
- summcount = summcount + symbinword[i]; // Считаем сумму.
- if (i == savenum) { // Если пошла последняя задействованная ячейка массива
- printf("\n"); // Переводим строку(косметика).
- summcount = summcount - 1; // Минусим 1 от суммы, чтобы в случае, если все ячейки пусты получить -1 и закончить цикл.
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment