Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 18:22   #1
tanjusha
 
Регистрация: 29.03.2010
Сообщений: 9
По умолчанию нужно разобраться с программой

Помогите написать алгоритм реализации программы для курсовой очень надо. не могу описать как именно происходит перевод слов с русского на азбуку морзе
Program_Oksana;
Uses Crt;
Const
Morse: array[128..159] of [4]= (
‘.-‘ , ‘-…’ , ‘.---‘ , ‘--. ‘ , {А, Б, В, Г}
‘-.. ‘ , ‘. ‘,’…-‘ , ‘--..’ , {Д, Е, Ж, З}
{И, Й, К, Л,}
{М, Н, О, П}
{Р, С, Т, У}
{Ф, Х, Ц, Ч}
{Ш, Щ, Ъ, Ы}
{Ь, Э, Ю, Я}
); {Параметры передачи}
TONE=100; {частота сигнала (Гц)}
L1=50; {длительность (мс) «точки»}
L2=100; {длительность (мс) «тире»}
L3=50; {пауза (мс) между точками и тире одной буквы}
L4=100; {пауза (мс) между буквами}
L5=150; {пауза (мс) между словами}
Var
mes : string; {сообщение}
sim : string[4]; {символ в кодировке Морзе – последовательность точек и тире}
znak : string[1]; {“ передаваемый“ знак – тире или точка}
I, j : integer; {номер символа и знака}
begin
clrscr;
writeln (‘*** телеграф ***’);
writeln (‘Введите сообщение, которое надо передать ‘);
writeln (‘(используйте только большие русские буквы )‘);
write (‘ -> ‘);
readln (mes);
for i=1 to Length (mes) do
begin
if (mes [i] > = ‘A’) and (mes[i] <= ’Я’) then
begin
{определим код очередной буквы (функция ord) сообщения и получим из таблицы кодировки соответствующий элемент массива – последовательность точек и тире}
sim := morse [ord (mes[i])];
j :=1;
repeat
if (sim[j]= ‘-’ ) or (sim[j]= ‘.’ ) then
begin
write (sim [j]);
sound (1000);
case sim[j] of
‘.’: Delay (50);
‘_’: Delay (100);
end;
Nosound;
Delay (50);
end;
j:=j+1;
until ((sim[j]=’ ‘ ) or (j>4));
Delay (100); {пауза между буквами}
end
else
if mes [i]= ‘ ‘ then {пробел между символами}
begin
write (‘ ‘); {пробел между словами сообщения}
Delay (150);
end;
end;
writeln
writeln (‘ Сообщение передано! ‘);
writeln (‘ Для завершения работы с программой нажмите ‘, ‘<Enter>’);
readln;
end.
tanjusha вне форума Ответить с цитированием
Старый 19.05.2010, 18:36   #2
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

это происходит вот тут:
Код:
for i=1 to Length (mes) do
begin
if (mes [i] > = ‘A’) and (mes[i] <= ’Я’) then 
begin
{определим код очередной буквы (функция ord) сообщения и получим из таблицы кодировки соответствующий элемент массива – последовательность точек и тире}
sim := morse [ord (mes[i])];
j :=1;// переходим в начало sim
repeat
if (sim[j]= ‘-’ ) or (sim[j]= ‘.’ ) then // если тек символ '-' или '.'
begin                                      // то  
write (sim [j]);                          //выводим символ
sound (1000);                          // врубаем звук
case sim[j] of 
‘.’: Delay (50);       //если символ '.' то пауза 50
‘_’: Delay (100);    // если символ '-' то пауза 100
end;
Nosound;    //вырубаем звук
Delay (50);
end;
j:=j+1; //переходим к след символу sim
until ((sim[j]=’ ‘ ) or (j>4)); // повторяем пока sim <>' ' или выйдем за границы строки sim
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!

Последний раз редактировалось DoDge_VipeR; 19.05.2010 в 18:44.
DoDge_VipeR вне форума Ответить с цитированием
Старый 19.05.2010, 18:38   #3
tanjusha
 
Регистрация: 29.03.2010
Сообщений: 9
По умолчанию

А можешь описать русскими обычными словами как оно происходит??
tanjusha вне форума Ответить с цитированием
Старый 19.05.2010, 18:45   #4
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

добавил комментарии)
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
DoDge_VipeR вне форума Ответить с цитированием
Старый 19.05.2010, 18:51   #5
tanjusha
 
Регистрация: 29.03.2010
Сообщений: 9
По умолчанию

for i=1 to Length (mes) do
begin
if (mes [i] > = ‘A’) and (mes[i] <= ’Я’) then
begin
а что это значит?
tanjusha вне форума Ответить с цитированием
Старый 19.05.2010, 18:54   #6
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

Код:
for i=1 to Length (mes) do  // цикл по слову
if (mes [i] > = ‘A’) and (mes[i] <= ’Я’) then // если символ от 'А' до 'Я' то
begin
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
DoDge_VipeR вне форума Ответить с цитированием
Старый 19.05.2010, 19:17   #7
tanjusha
 
Регистрация: 29.03.2010
Сообщений: 9
По умолчанию

спасибо огромное
tanjusha вне форума Ответить с цитированием
Старый 19.05.2010, 19:30   #8
tanjusha
 
Регистрация: 29.03.2010
Сообщений: 9
По умолчанию

sim := morse [ord (mes[i])];
а что значит строка
tanjusha вне форума Ответить с цитированием
Старый 20.05.2010, 04:29   #9
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

у тебя же написано
Цитата:
{определим код очередной буквы (функция ord) сообщения и получим из таблицы кодировки соответствующий элемент массива – последовательность точек и тире}
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
DoDge_VipeR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться с программой Bercut48rus Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 11.12.2009 02:40
Помогите разобраться с программой IrinaPetrova Фриланс 3 01.12.2009 13:03
Помогите разобраться с программой Svetlyachok Общие вопросы C/C++ 7 06.06.2009 17:55
Помогите разобраться с программой First90_19 Паскаль, Turbo Pascal, PascalABC.NET 0 23.12.2008 01:58