Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 19.09.2020
Сообщений: 48
1

Превратить сообщение азбуки Морза 64 символа в графическое изображение размером 8*8

14.01.2021, 14:44. Просмотров 1467. Ответов 11

здравствуйте, помогите , пожалуйста, с решением задачи : Разработать программу на языке программирования
Паскаль. Превратить сообщение азбуки Морза 64 символа в графическое
изображение размером 8*8.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2021, 14:44
Ответы с готовыми решениями:

StretchBlt: из bmp размером 30х30 вывести на экран изображение размером 100х100
вот начал изучать WinAPI и щас питаюсь вивести bmp на екран что делает StretchBlt и как мне нею...

Графическое изображение
При компиляции кода выходит такая ошибка: ...

графическое изображение
Составить программу для графического изображения делимости чисел от 1 до N (значение N вводится с...

Графическое изображение
Заштриховать отрезки. Отрезок А от -4 до -2,5. Отрезок В до -10. Отрезки А/В и АUB до -10 и от -4...

11
2062 / 942 / 378
Регистрация: 19.03.2019
Сообщений: 3,065
14.01.2021, 14:56 2
Цитата Сообщение от qwert10 Посмотреть сообщение
Превратить сообщение азбуки Морза 64 символа в графическое
изображение размером 8*8
а как это?
0
0 / 0 / 1
Регистрация: 19.09.2020
Сообщений: 48
14.01.2021, 15:10  [ТС] 3
Хороший вопрос)
Просто поставили перед фактом в задаче, но как я понял, нужно написать программу, которая преобразовывала введенные символы азбуки Морзе в графическое изображение( может быть с помощью Point и тому подобному?)

Добавлено через 9 минут
Или, может нужно ввести сообщение, содержащее 64 символа азбуки Морзе, и вывести изображение 8 на 8.
Извините за такой разброс, но задача крайне непонятная, но ее необходимо решить)
0
2062 / 942 / 378
Регистрация: 19.03.2019
Сообщений: 3,065
14.01.2021, 15:20 4
Лучший ответ Сообщение было отмечено qwert10 как решение

Решение

qwert10, я лично ничего не понял. и мой тебе совет - обратись к тому, кто тебе дал задачу за разъяснениями. попроси пример дать того, что на входе и что нужно получить на выходе.
иначе тут без телепатии и магического хрустального шара не обойтись.

Добавлено через 2 минуты
либо возьми решение отсюда Азбука Морзе
1
0 / 0 / 1
Регистрация: 19.09.2020
Сообщений: 48
14.01.2021, 15:20  [ТС] 5
я прекрасно это понимаю, и сам такого же мнения. Но, думаю, Вы тоже осознаёте, какое существует отношение у преподавателей к студентам( просто дали список задач и все - делайте как хотите). Но в любом случае, спасибо за ответы!)
0
Модератор
62540 / 46714 / 32197
Регистрация: 18.05.2008
Сообщений: 113,060
14.01.2021, 15:32 6
Кстати такой вопрос уже был
Азбука Морзе графика
с тем же результатом.
0
0 / 0 / 1
Регистрация: 19.09.2020
Сообщений: 48
14.01.2021, 15:35  [ТС] 7
mr-Crocodile, Я так понимаю, классическая задача, чтобы завалить во время сессии)
0
2062 / 942 / 378
Регистрация: 19.03.2019
Сообщений: 3,065
14.01.2021, 16:10 8
qwert10, скорее, задача, которая очень плохо сформулирована (сам препод придумал, сам и знает, что он хочет получить - остальным нужно догадываться).
0
276 / 259 / 111
Регистрация: 23.01.2018
Сообщений: 872
15.01.2021, 12:13 9
Может, подразумевалось вот это? Лень калякать на Pascal, написал на APL. Если нужно именно это, могу перевести на Pascal.

Код
      8 8⍴'.-'[?64⍴2]
-.---.--
-.--..-.
-.----.-
-.--..-.
.....--.
--......
..----..
----.-..
0
2062 / 942 / 378
Регистрация: 19.03.2019
Сообщений: 3,065
15.01.2021, 14:15 10
Цитата Сообщение от Вадим Тукаев Посмотреть сообщение
Может, подразумевалось вот это?
по ссылке в пост #4 код написанный Puporev именно это и делает - раскладывает (выводит) одну строчку длиной 64 символа на 8 строчек по 8 символов в каждой строке.
1
Модератор
8334 / 4106 / 2847
Регистрация: 17.08.2012
Сообщений: 13,101
15.01.2021, 23:54 11
Под символами имеются ввиду точки, тире, паузы между буквами и паузы между словами этой самой азбуки Морзе. Почему не сами буквы? А потому, что тогда и будет сохранён текст, а не сообщение на азбуке Морзе.

Что вообще есть в сообщении на азбуке Морзе, и как это обозначается на бумаге?

НазваниеОбозначениеДлительность
в единицах времени
(для справки)
Точка"∙"1
Тире"-"3
Пауза внутри символаНет1
Пауза между символами" "3
Пауза между словами"  "7

Паузу внутри символа кодировать не нужно (по сути, тире или точка состоят из тире или точки и паузы в 1 единицу). Паузу между словами можно заменить двумя паузами между символами. Это логично, если печатать сообщение в виде строки, тогда между буквами будет по одному символу пробела, а между словами - по два символа пробела.

Тогда азбуку Морзе можно закодировать, например, так:

ЭлементОбозначение
Номер
цвета
Точка"∙"1
Тире"-"2
Пауза между символами" "3
Пустой символНет0

Пустой символ нужен для заполнения свободного места в изображении, когда размер изображения больше размера сообщения.

Удобнее всего, по моему мнению, в качестве носителя использовать файл 8 бит на точку с палитрой 256 цветов, без сжатия, естественно. Структура такого файла неизменна.

Максимально простая программа, подойдёт для любого диалекта паскаля, и не требует никаких библиотек для работы с изображениями:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const
  nbmp = '8x8.bmp';
  sym = '.- ';
  test = '- . -.- ... -  -. .-  .. --.. --- -... .-. .- ...- . -. .. ..';
         {т_е_к  _с  _т__н _а __и _з   _о  _б   _р  _а _ж   _е_н _и _и}
var
  bmp: file of byte;
  t: text;
  s, ch: string;
  i: integer;
  x: byte;
begin
  repeat
    write('1 - записать в BMP, 2 - прочитать из BMP, 3 - выход: ');
    readln(ch);
    if ch[1] in ['1'..'2'] then
      begin
        assign(bmp, nbmp);
        reset(bmp);
        seek(bmp, 1078)
      end;
    case ch[1] of
    '1':
      begin
        s := test;
        writeln('Строка для запси:');
        writeln(s);
        i := 1;
        while (i <= length(s)) and (i <= 64) do
          begin
            write(bmp, pos(s[i], sym));
            inc(i)
          end;
        for i := i + 1 to 64 do write(bmp, 0)
      end;
    '2':
      begin
        s := '';
        i := 1;
        while i <= 64 do
          begin
            read(bmp, x);
            if x > 0 then s := s + sym[x]
            else break;
            inc(i)
          end;
        writeln('Прочитанная строка:');
        writeln(s)
      end;
    end;
    if ch[1] in ['1'..'2'] then close(bmp)
  until ch[1] = '3'
end.
Архив файла для теста, чёрный квадрат 8x8: 8x8.zip

Содержимое этого файла
Код
//     #### Заголовок файла BitMapFileHeader
{   0} $42,$4D,         //bfType = 'BM', сигнатура
{   2} $76,$04,$00,$00, //bfSize = 1142, размер файла 
{   6} $00,$00,$00,$00, //bfReserved1 = 0, bfReserved2 = 0, зарезервировано, всегда 0
{  10} $36,$04,$00,$00, //bfOffsetBits = 1078, смещение изображения от начала файла
//     #### Информационный заголовок BitMapInfoHeader
{  14} $28,$00,$00,$00, //biSize = 54-14 = 40, длина заголовка BitMapInfoHeader
{  18} $08,$00,$00,$00, //biWidth = 8, ширина изображения, точки
{  22} $08,$00,$00,$00, //biHeight = 8, высота изображения, точки
{  26} $01,$00,         //biPlanes = 1, число плоскостей изображения
{  28} $08,$00,         //biBitCount = 8, глубина цвета, бит на точку
{  30} $00,$00,$00,$00, //biCompression = 0, тип компрессии (0 - несжатое изображение)
{  34} $40,$00,$00,$00, //biSizeImage = 8*8 = 64 размер изображения, байт
{  38} $00,$00,$00,$00, //biXPelsPerMeter = 0 горизонтальное разрешение, точки на метр (0 - стандартное)
{  42} $00,$00,$00,$00, //biYPelsPerMeter = 0 вертикальное разрешение, точки на метр (0 - стандартное)
{  46} $00,$00,$00,$00, //biColorsUsed = 0 число цветов (0 - максимально возможное для данной глубины цвета)
{  50} $00,$00,$00,$00, //biColorsImportant = 0 число основных цветов
//     #### Палитра ColorTable, длина 256*4=1024
{  54}
//             +0               +1               +2               +3
{*  0+} $00,$00,$00,$00, $00,$00,$80,$00, $00,$80,$00,$00, $00,$80,$80,$00,
{*  4+} $80,$00,$00,$00, $80,$00,$80,$00, $80,$80,$00,$00, $C0,$C0,$C0,$00,
{*  8+} $C0,$DC,$C0,$00, $F0,$CA,$A6,$00, $00,$20,$40,$00, $00,$20,$60,$00,
{* 12+} $00,$20,$80,$00, $00,$20,$A0,$00, $00,$20,$C0,$00, $00,$20,$E0,$00,
{* 16+} $00,$40,$00,$00, $00,$40,$20,$00, $00,$40,$40,$00, $00,$40,$60,$00,
{* 20+} $00,$40,$80,$00, $00,$40,$A0,$00, $00,$40,$C0,$00, $00,$40,$E0,$00,
{* 24+} $00,$60,$00,$00, $00,$60,$20,$00, $00,$60,$40,$00, $00,$60,$60,$00,
{* 28+} $00,$60,$80,$00, $00,$60,$A0,$00, $00,$60,$C0,$00, $00,$60,$E0,$00,
{* 32+} $00,$80,$00,$00, $00,$80,$20,$00, $00,$80,$40,$00, $00,$80,$60,$00,
{* 36+} $00,$80,$80,$00, $00,$80,$A0,$00, $00,$80,$C0,$00, $00,$80,$E0,$00,
{* 40+} $00,$A0,$00,$00, $00,$A0,$20,$00, $00,$A0,$40,$00, $00,$A0,$60,$00,
{* 44+} $00,$A0,$80,$00, $00,$A0,$A0,$00, $00,$A0,$C0,$00, $00,$A0,$E0,$00,
{* 48+} $00,$C0,$00,$00, $00,$C0,$20,$00, $00,$C0,$40,$00, $00,$C0,$60,$00,
{* 52+} $00,$C0,$80,$00, $00,$C0,$A0,$00, $00,$C0,$C0,$00, $00,$C0,$E0,$00,
{* 56+} $00,$E0,$00,$00, $00,$E0,$20,$00, $00,$E0,$40,$00, $00,$E0,$60,$00,
{* 60+} $00,$E0,$80,$00, $00,$E0,$A0,$00, $00,$E0,$C0,$00, $00,$E0,$E0,$00,
{* 64+} $40,$00,$00,$00, $40,$00,$20,$00, $40,$00,$40,$00, $40,$00,$60,$00,
{* 68+} $40,$00,$80,$00, $40,$00,$A0,$00, $40,$00,$C0,$00, $40,$00,$E0,$00,
{* 72+} $40,$20,$00,$00, $40,$20,$20,$00, $40,$20,$40,$00, $40,$20,$60,$00,
{* 76+} $40,$20,$80,$00, $40,$20,$A0,$00, $40,$20,$C0,$00, $40,$20,$E0,$00,
{* 80+} $40,$40,$00,$00, $40,$40,$20,$00, $40,$40,$40,$00, $40,$40,$60,$00,
{* 84+} $40,$40,$80,$00, $40,$40,$A0,$00, $40,$40,$C0,$00, $40,$40,$E0,$00,
{* 88+} $40,$60,$00,$00, $40,$60,$20,$00, $40,$60,$40,$00, $40,$60,$60,$00,
{* 92+} $40,$60,$80,$00, $40,$60,$A0,$00, $40,$60,$C0,$00, $40,$60,$E0,$00,
{* 96+} $40,$80,$00,$00, $40,$80,$20,$00, $40,$80,$40,$00, $40,$80,$60,$00,
{*100+} $40,$80,$80,$00, $40,$80,$A0,$00, $40,$80,$C0,$00, $40,$80,$E0,$00,
{*104+} $40,$A0,$00,$00, $40,$A0,$20,$00, $40,$A0,$40,$00, $40,$A0,$60,$00,
{*108+} $40,$A0,$80,$00, $40,$A0,$A0,$00, $40,$A0,$C0,$00, $40,$A0,$E0,$00,
{*112+} $40,$C0,$00,$00, $40,$C0,$20,$00, $40,$C0,$40,$00, $40,$C0,$60,$00,
{*116+} $40,$C0,$80,$00, $40,$C0,$A0,$00, $40,$C0,$C0,$00, $40,$C0,$E0,$00,
{*120+} $40,$E0,$00,$00, $40,$E0,$20,$00, $40,$E0,$40,$00, $40,$E0,$60,$00,
{*124+} $40,$E0,$80,$00, $40,$E0,$A0,$00, $40,$E0,$C0,$00, $40,$E0,$E0,$00,
{*128+} $80,$00,$00,$00, $80,$00,$20,$00, $80,$00,$40,$00, $80,$00,$60,$00,
{*132+} $80,$00,$80,$00, $80,$00,$A0,$00, $80,$00,$C0,$00, $80,$00,$E0,$00,
{*136+} $80,$20,$00,$00, $80,$20,$20,$00, $80,$20,$40,$00, $80,$20,$60,$00,
{*140+} $80,$20,$80,$00, $80,$20,$A0,$00, $80,$20,$C0,$00, $80,$20,$E0,$00,
{*144+} $80,$40,$00,$00, $80,$40,$20,$00, $80,$40,$40,$00, $80,$40,$60,$00,
{*148+} $80,$40,$80,$00, $80,$40,$A0,$00, $80,$40,$C0,$00, $80,$40,$E0,$00,
{*152+} $80,$60,$00,$00, $80,$60,$20,$00, $80,$60,$40,$00, $80,$60,$60,$00,
{*156+} $80,$60,$80,$00, $80,$60,$A0,$00, $80,$60,$C0,$00, $80,$60,$E0,$00,
{*160+} $80,$80,$00,$00, $80,$80,$20,$00, $80,$80,$40,$00, $80,$80,$60,$00,
{*164+} $80,$80,$80,$00, $80,$80,$A0,$00, $80,$80,$C0,$00, $80,$80,$E0,$00,
{*168+} $80,$A0,$00,$00, $80,$A0,$20,$00, $80,$A0,$40,$00, $80,$A0,$60,$00,
{*172+} $80,$A0,$80,$00, $80,$A0,$A0,$00, $80,$A0,$C0,$00, $80,$A0,$E0,$00,
{*176+} $80,$C0,$00,$00, $80,$C0,$20,$00, $80,$C0,$40,$00, $80,$C0,$60,$00,
{*180+} $80,$C0,$80,$00, $80,$C0,$A0,$00, $80,$C0,$C0,$00, $80,$C0,$E0,$00,
{*184+} $80,$E0,$00,$00, $80,$E0,$20,$00, $80,$E0,$40,$00, $80,$E0,$60,$00,
{*188+} $80,$E0,$80,$00, $80,$E0,$A0,$00, $80,$E0,$C0,$00, $80,$E0,$E0,$00,
{*192+} $C0,$00,$00,$00, $C0,$00,$20,$00, $C0,$00,$40,$00, $C0,$00,$60,$00,
{*196+} $C0,$00,$80,$00, $C0,$00,$A0,$00, $C0,$00,$C0,$00, $C0,$00,$E0,$00,
{*200+} $C0,$20,$00,$00, $C0,$20,$20,$00, $C0,$20,$40,$00, $C0,$20,$60,$00,
{*204+} $C0,$20,$80,$00, $C0,$20,$A0,$00, $C0,$20,$C0,$00, $C0,$20,$E0,$00,
{*208+} $C0,$40,$00,$00, $C0,$40,$20,$00, $C0,$40,$40,$00, $C0,$40,$60,$00,
{*212+} $C0,$40,$80,$00, $C0,$40,$A0,$00, $C0,$40,$C0,$00, $C0,$40,$E0,$00,
{*216+} $C0,$60,$00,$00, $C0,$60,$20,$00, $C0,$60,$40,$00, $C0,$60,$60,$00,
{*220+} $C0,$60,$80,$00, $C0,$60,$A0,$00, $C0,$60,$C0,$00, $C0,$60,$E0,$00,
{*224+} $C0,$80,$00,$00, $C0,$80,$20,$00, $C0,$80,$40,$00, $C0,$80,$60,$00,
{*228+} $C0,$80,$80,$00, $C0,$80,$A0,$00, $C0,$80,$C0,$00, $C0,$80,$E0,$00,
{*232+} $C0,$A0,$00,$00, $C0,$A0,$20,$00, $C0,$A0,$40,$00, $C0,$A0,$60,$00,
{*236+} $C0,$A0,$80,$00, $C0,$A0,$A0,$00, $C0,$A0,$C0,$00, $C0,$A0,$E0,$00,
{*240+} $C0,$C0,$00,$00, $C0,$C0,$20,$00, $C0,$C0,$40,$00, $C0,$C0,$60,$00,
{*244+} $C0,$C0,$80,$00, $C0,$C0,$A0,$00, $F0,$FB,$FF,$00, $A4,$A0,$A0,$00,
{*248+} $80,$80,$80,$00, $00,$00,$FF,$00, $00,$FF,$00,$00, $00,$FF,$FF,$00,
{*252+} $FF,$00,$00,$00, $FF,$00,$FF,$00, $FF,$FF,$00,$00, $FF,$FF,$FF,$00,
//      #### Изображение Image, по строкам слева направо и СНИЗУ ВВЕРХ, длина = 8*8 = 64
{1078}
$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,
$00,$00,$00,$00,$00,$00,$00,$00,


То, что под спойлером, можно использовать как шаблон для создания .BMP файлов.
0
Модератор
62540 / 46714 / 32197
Регистрация: 18.05.2008
Сообщений: 113,060
16.01.2021, 08:53 12
qwert10, А все-таки, какой у Вас Паскаль?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.01.2021, 08:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Графическое изображение
Написать программу, которая выводит на экран любое графическое изображение (по усмотрению...

Графическое изображение
На форме должен лежать компонент TImage

Графическое изображение делимости
помогите пожалуйста через два дня надо показать решения задание№1 написать программу для...

Графическое изображение множеств
Я новичок в программирование и мне нужна помощь в одной задаче. Суть вот в чём: Есть программка...

Построить графическое изображение
С использованием модуля работы с графикой составить программу для рисования на экране трех...

Графическое изображение в движении
изображение кота двигающего усами, глазами и хвостом.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.