|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
12.02.2012, 21:29 | #1 (permalink) |
Новичок
Регистрация: 12.02.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Необходимо написать программу сжимающую картинку
Формат входного файла В первой строке входного файла Input.txt находятся два натуральных числа w, h — ширина и высота исходного изображения в пикселях. (1 ≤ w, h ≤ 100). Гарантируется, что во входных тестах оба числа четные. Следующие h строк входного файла содержат по w чисел, каждое из которых равно либо 0, если этот пиксель белый, либо 1, если пиксель — черный. Формат выходного файла В первой строке выходного файла Output.txt требуется вывести два числа W, H — ширину и высоту сжатого изображения. Следующие H cтрок должны содержать по W чисел — описание сжатого изображения, в формате, аналогичном формату входного файла. |
12.02.2012, 21:29 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Отправлю вам топики, которые аналогичны вашей теме Написать программу. Delphi Написать программу... |
12.02.2012, 21:31 | #2 (permalink) | |
Новичок
Регистрация: 12.02.2012
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
|
|
13.02.2012, 13:09 | #3 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Задание достаточно интересное и нестандартное. Под какую именно версию Pascal вам нужно решение?
Дело в том, что работа с графикой в разных версиях отличается, и то, что программа заработает в BP, не гарантирует, что она же без проблем запустится в FreePascal-е и уж, тем более, в PascalABC. |
13.02.2012, 18:55 | #4 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Ну вот, как вариант: сюжет "Серый Волк и Красная Шапочка". Сделано для Турбо-Паскаля, впрочем, графику там можно прицепить любую, алгоритм сохранится. Естественно, пути к файлам можно поменять. Также самостоятельно конфигурируйте параметры процедуры InitGraph. Цвета у меня инвертированы, поскольку используется черный DOS-экран. И еще - для наглядности каждая точка - это квадрат экрана 10х10 пикселей.
Код:
Uses Graph,CRT; Var A,B:Array[1..100,1..100] of byte; M,N,i,j,k,l:Byte; X0,Y0,X,Y:Word; f:Text; C:Char; Code:Integer; BEGIN Assign(f,'D:\Input.txt'); Reset(f); Readln(f,N,M); For i:=1 to M do Begin For j:=1 to N do begin Read(f,C); Val(C,A[i,j],Code); end; Readln(f); End; Close(f); InitGraph(...); ClearDevice; X0:=(GetMaxX-N*10) div 2; Y0:=(GetMaxY-M*10) div 2; For i:=1 to M do For j:=1 to N do For k:=0 to 9 do For l:=0 to 9 do Begin X:=X0+j*10+k; Y:=Y0+i*10+l; If A[i,j]=0 then PutPixel(X,Y,Black) else PutPixel(X,Y,White); End; ReadKey; Assign(f,'D:\Output.txt'); Rewrite(f); N:=N div 2; M:=M div 2; Writeln(f,N,' ',M); For i:=1 to M do Begin For j:=1 to N do begin B[i,j]:=A[2*i-1,2*j-1]+A[2*i,2*j-1]+A[2*i-1,2*j]+A[2*i,2*j]; If B[i,j]>1 then B[i,j]:=1 else B[i,j]:=0; Write(f,B[i,j]); end; Writeln(f); End; Close(f); ClearDevice; X0:=(GetMaxX-N*10) div 2; Y0:=(GetMaxY-M*10) div 2; For i:=1 to M do For j:=1 to N do For k:=0 to 9 do For l:=0 to 9 do Begin X:=X0+j*10+k; Y:=Y0+i*10+l; If B[i,j]=0 then PutPixel(X,Y,Black) else PutPixel(X,Y,White); End; ReadKey; END. |
13.02.2012, 22:58 | #5 (permalink) |
Member
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
|
да. и правда интересная программа. Вот почему нам не дают такого? вЛицее к примеру... хотя бы как факультатив...
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
14.02.2012, 09:54 | #7 (permalink) | |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Цитата:
А Вы думаете, тут требуется BMP-изображения считывать, декодировать, ужимать и потом обратно преобразовывать? Тогда я точно - пас. |
|
14.02.2012, 10:36 | #8 (permalink) | |
Лесник
Регистрация: 11.10.2011
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 771
|
Цитата:
и значит все верно сделано В том то и прелесть формата bmp, что он без сжатия. Можно читать как бинарный файл, структура простая |
|
14.02.2012, 14:28 | #10 (permalink) |
support
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,794
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
|
Извиняюсь, не вчитался в задание. Вы совершенно правы, задание на псевдографику, просто вместо символов белых и черных прямоугольников по тексту 1 и 0.
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|