Форум программистов, компьютерный форум, киберфорум
Наши страницы
Free Pascal
Войти
Регистрация
Восстановить пароль
 
_Lubov_
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 3
#1

Перевести текст из азбуки в Морзе в обычную запись - Free Pascal

30.11.2015, 17:15. Просмотров 364. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста.
Нужно перевести из азбуки в Морзе в обычную запись.
При вводе текста буквы разделяются одним пробелом, а слова двумя и более пробелами.



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
var
  s, s1, s2:string;
  i,j,l,r:integer;
  mrz:array[1..32] of string=
                 ('.-','-...','.--','--.','-..','.','...-','--..',
                  '..','.---','-.-','.-..','--','-.','---','.--.',
                  '.-.','...','-','..-','..-.','....','-.-.','---.',
                  '----','--.-','-..-','-.--','-..-','..-.','..--','.-.-');
  b: string='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
 
begin
 
 readln (s);
     l:=0;
     r:=0;
     for i:=1 to length(s)+1 do
         begin
 
         if (s[i]=' ') or (i=length(s)+1) then
                 begin
 
                      r:=i;
                      s1:=copy(s,l+1,r-l-1);
                      l:=i;
                      for j:=1 to 32 do begin
                       if s1=mrz[j] then s2:=b[j];
                       if s1='' then s2:=' ';
                       end;
 
                      write(s2);
 
                 end;
 
         end;
 
     end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2015, 17:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перевести текст из азбуки в Морзе в обычную запись (Free Pascal):

Текст перевести в последовательность точек и тире с помощью азбуки Морзе
Задача: "Вводимый с клавиатуры или из файла текст перевести в...

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

Переделать код азбуки морзе в более простую и доступную форму
type PItem = ^Item; Item = record next : array of PItem; value : string;...

Морзе. Заменить цифры на код морзе.
ПОМОГИТЕ!!! Люди вот пишу программу. Задание: необходимо в текстовом файле...

Морзянка. Вводимый с клавиатуры текст перевести в последовательность точек и тире с помощью азбуки Морзе.
Народ, помогите плз решить 2 задачки на С оч надо... 1)Морзянка. Вводимый с ...

Декодирование азбуки морзе
Подскажите пожалуйста как сделать декодирование азбуки морзе. Сделал...

6
APALoff
1638 / 1067 / 1080
Регистрация: 03.07.2013
Сообщений: 4,507
02.12.2015, 10:27 #2
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

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
54
55
56
57
Const
  nM = 32;
  zn = ['.','-'];
Var
  mrz  : array[1..nM] of string :=
                 ('.-','-...','.--','--.','-..','.','...-','--..',
                  '..','.---','-.-','.-..','--','-.','---','.--.',
                  '.-.','...','-','..-','..-.','....','-.-.','---.',
                  '----','--.-','-..-','-.--','-..-','..-.','..--','.-.-');
  RUch : string :='аАбБвВгГдДеЕжЖзЗиИйЙкКлЛмМнНоОпПрРсСтТуУфФхХцЦчЧшШщЩъЪыЫьЬэЭюЮяЯ';
 
Function Mcod(S : String) : String;
Var i,k : Integer;
    sc  : String;
Begin
  sc:='';
  For i:=1 to Length(S) do
  Begin
    k:=Pos(S[i],RUch);
    If k>0 then sc:=sc+mrz[(k+Ord(Odd(k))) div 2]+' ' else sc:=sc+S[i];
  end;
  If sc[Length(sc)]=' ' then Delete(sc,Length(sc),1);
  Mcod:=sc;
end;
 
Function GetCharM(ss : String) : String;
Var j : Integer;
Begin
  GetCharM:=ss;
  For j:=1 to nM do If mrz[j]=ss then GetCharM:=RUch[j*2];
end;
  
Function Mdecod(S : String) : String;
Var i,j,k : Integer;
    sc  : String;
Begin
  sc:=''; k:=0; S:=S+'~';
  For i:=1 to Length(S) do
  Begin
    If not (S[i] in zn) then
    Begin
      If k<>0 then
      Begin
        sc:=sc+GetCharM(Copy(S,k,i-k));
        k:=0;
      end;
      If (S[i]=' ') and (S[i+1]=' ') then sc:=sc+S[i];
    end
      else If k=0 then k:=i;
  end;
  Mdecod:=sc;
end;
 
Begin
  Writeln(Mcod('Азбука Морзе'));
  Writeln(Mdecod(Mcod('Азбука Морзе')));
end.
2
APALoff
1638 / 1067 / 1080
Регистрация: 03.07.2013
Сообщений: 4,507
02.12.2015, 10:29 #3
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Вдруг понадобится табличка, прилагаю.
2
Миниатюры
Перевести текст из азбуки в Морзе в обычную запись  
_Lubov_
0 / 0 / 0
Регистрация: 30.11.2015
Сообщений: 3
02.12.2015, 12:54  [ТС] #4
Спасибо
0
ZX Spectrum-128
02.12.2015, 12:58
  #5

Не по теме:

APALoff, помнится, когда-то давно писал на ZX Spectrum - basic + asm.
Ух, как меня корячило тогда

0
APALoff
02.12.2015, 13:04
  #6

Не по теме:

ZX Spectrum-128, а у меня давно сидит в голове идея брать с микрофонного входа сигнал, анализировать его и переводить морзянку в текст... пока что так и не подступился к этому ((

0
ZX Spectrum-128
02.12.2015, 13:12     Перевести текст из азбуки в Морзе в обычную запись
  #7

Не по теме:

APALoff, у меня такая же стояла задача. Я тогда и не осилил. Нашел asm-код какого-то голландца и нагло его использовал.

0
02.12.2015, 13:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2015, 13:12
Привет! Вот еще темы с ответами:

Клавиатурный тренажер азбуки Морзе
Я не очень хорошо разбираюсь в програмировании. Но курсовая уже...

Вывод азбуки Морзе на системный динамик
.386 .model flat, stdcall option casemap :none ...

Вывод азбуки Морзе на системный динамик
Помогите, пожалуйста!!!! Мне препод задал написать программу вывода на...

Кодовое дерево азбуки Морзе. Кодирование
Есть описанный класс Stack, элементами которого являются узлы бинарного дерева....


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

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

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