Керриган & Ритчи.Язык Программирования C
|
|
vasua99 | Дата: Четверг, 09 Августа 2012, 16:50 | Сообщение # 1 |
GNU follower
Сейчас нет на сайте
| Здравствуйте, я начал учить C по этой книге, но проблема в том, что дойдя до 2 главы, я не могу выполнить задания.Просто не могу придумать алгоритм для решения(знания конструкций языка есть), что подскажете?Очень охото изучить именно C, ведь это язык Пингвина, в котором я и работаю.
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
pekar | Дата: Четверг, 09 Августа 2012, 18:08 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Было бы не плохо, еслиб ты написал само задание.
Купил торку и не парюсь. Ключ Windows 10 Pro от 499р
|
|
| |
vasua99 | Дата: Четверг, 09 Августа 2012, 21:25 | Сообщение # 3 |
GNU follower
Сейчас нет на сайте
| 1.13 Напишите программу для вывода гистограммы длин слов во входном потоке.(С горизонтальной гистограммой я справился, а вот с вертикальной идей вообще нет) 1.22 Напишите программу для сворачивания длинных строк в две или более коротких после последнего не пустого символа, встречающегося перед n-м столбцом длинной строки... 1.23 Напишите программу для выполнения примитивной синтаксической проверки программ на C, таких как непарные круглые, квадратные, фигурные скобки....
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Matou | Дата: Четверг, 09 Августа 2012, 21:34 | Сообщение # 4 |
Исходный коТ
Сейчас нет на сайте
| В K&R относительно запарные задания они ориентированны на программистов изучающих С, а не на тех кто только учится программировать. Советую выполнить только часть заданий, а к оставшимся вернуться когда наберешься опыта. Добавлено (09.08.2012, 21:34) ---------------------------------------------
Quote (vasua99) С горизонтальной гистограммой я справился, а вот с вертикальной идей вообще нет Понравилась в свое время эта задача, решается в два прохода, сначала составляешь массив с длинами слов, потом в соответствии с этим массивом делаешь вывод, надеюсь идея ясна.
|
|
| |
vasua99 | Дата: Четверг, 09 Августа 2012, 21:40 | Сообщение # 5 |
GNU follower
Сейчас нет на сайте
| с длинной слов не проблема,а вот с выводом вертикальной гистограммы.
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |
Matou | Дата: Четверг, 09 Августа 2012, 22:07 | Сообщение # 6 |
Исходный коТ
Сейчас нет на сайте
| Ну я же говорю, составляешь массив, потом делаешь построчный вывод в соответствии с этим массивом. Скажем у тебя самое длинное слово 9 букв, выводишь девять строк каждый символ строки выводишь проверяя массив, если девять минус номер строки меньше чем элемент массивы выводишь символ гистограммы, если больше, то пробел.
|
|
| |
vasua99 | Дата: Пятница, 10 Августа 2012, 10:12 | Сообщение # 7 |
GNU follower
Сейчас нет на сайте
| спасибо всем - вроде получилось:
Code #include <stdio.h> #include <stdlib.h> #define MAXHINST 10 /* максимальное количество самых длинных слов */
int compare(const void *a,const void *b) { return (*(int*)b - *(int*)a); }
int main() { int c, length, hinst_table[256], i, h; length = i = 0; while((c = getchar()) != EOF) { if(c == ' ' || c == '\n' || c == '\t') { if(length) { hinst_table[i] = length; ++i; } length = 0; } else length++; } qsort(hinst_table, 256, sizeof(int), compare); for(i = hinst_table[0]; i > 0; --i) { for(h = 0; h < MAXHINST; ++h) { if(hinst_table[h] < i) putchar(' '); else putchar('*'); } putchar('\n'); } }
Жизнь игра, и мы в ней пешки... А я кушаю пельмешки)
|
|
| |