0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 8
1

Азбука Морзе - при нажатии на клавишу выдать соответствующий сигнал

12.06.2016, 09:08. Показов 2740. Ответов 12

Студворк — интернет-сервис помощи студентам
Дайте пожалуйста код Азбуки Морзе с пищанием при переводе с русского на азбуку морзе.
Вот задание от преподавателя:Программа- при нажатии на букву звучит азбука морзе этой буквы.
Буду очень признателен так как pascal мне не дается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2016, 09:08
Ответы с готовыми решениями:

Азбука Морзе, ошибка при открытии файла
С кодом относительно а. морзе разобралась. осталась проблема с открытием файла#include <fstream>...

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

Азбука Морзе
Есть код для шифрования символов в Азбуку Морзе,но нужно что б эта программа также могла считывать...

Азбука Морзе
Азбука Морзе. Напишите программу, которая умеет переводить текст в азбуку Морзе и наоборот. Для...

12
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
12.06.2016, 09:58 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Здесь все довольно просто. Для начала нам потребуется библиотека Crt. В ней находятся нужные нам процедуры воспроизведения , приостановки и выключения звука. Теперь пишем процедуры point ("точка"):
Pascal
1
2
3
4
5
6
7
procedure point;
begin
  Sound(1000);
  Delay(200);
  NoSound;
  Delay(200)
end;
и dash ("тире"):
Pascal
1
2
3
4
5
6
7
procedure dash;
begin
  Sound(1000);
  Delay(600);
  NoSound;
  Delay(200)
end;
Процедура для сканирования нажатой клавиши называется ReadKey.

Теперь соберем все вышесказанное в кучу:
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
uses crt;
 
procedure point;
begin
  Sound(1000);
  Delay(200);
  NoSound;
  Delay(200)
end;
 
procedure dash;
begin
  Sound(1000);
  Delay(600);
  NoSound;
  Delay(200)
end;
 
var
  c: char;
 
begin
  c := ReadKey;
  case c of:
    'а': begin point; dash end;
    'б': begin dash; point; point; point end;
    'в': begin point; dash; dash end;
    'г': begin // отсюда уже сам 
  end;
end.
Теперь находишь в интернете азбуку морзе и для остальных букв пишешь код сам. Попробуй. Это очень просто.
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 8
12.06.2016, 10:08  [ТС] 3
Спасибо за внимание,сейчас буду учится)
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
12.06.2016, 10:11 4
Когда закончишь выложи полный код сюда.
1
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 8
12.06.2016, 12:00  [ТС] 5
хорошо

Добавлено через 1 час 41 минуту
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
58
uses crt;
 
procedure point;
begin
  Sound(1000);
  Delay(200);
  NoSound;
  Delay(200)
end;
 
procedure dash;
begin
  Sound(1000);
  Delay(600);
  NoSound;
  Delay(200)
end;
 
var
  c: char;
 
begin
  c := ReadKey;
  case c of:
    'а': begin point; dash end;
    'б': begin dash; point; point; point end;
    'в': begin point; dash; dash end;
    'г': begin dash; dash; point end;
    'д': begin dash; point; point end;
    'e': begin point end;
    'ж': begin point; point; point; dash end;
    'з': begin dash; dash; point; point end;
    'и': begin point; point end;
    'й': begin point; dash; dash; dash end;
    'к': begin dash; point; dash end;
    'л': begin point; dash; point; point end;
    'м': begin dash; dash end;
    'н': begin dash; point end;
    'о': begin dash; dash; dash end;
    'п': begin point; dash; dash; point end;
    'р': begin point; dash; point end;
    'c': begin point; point; point end;
    'т': begin dash end;
    'у': begin point; point; dash end;
    'ф': begin point; point; dash; point end;
    'х': begin point; point; point; point end;
    'ц': begin dash; point; dash; point end;
    'ч': begin dash; dash; dash; point end;
    'ш': begin dash; dash; dash; dash end;
    'щ': begin dash; dash; point; dash end;
    'ъ': begin dash; point; point; dash end;
    'ы': begin dash; point; dash; dash end;
    'ь': begin dash; point; point; dash end;
    'э': begin point; point; dash; point end;
    'ю': begin point; point; dash; dash end;
    'я': begin point; dash; point; dash end;
  end;
end.
Добавлено через 3 минуты
Цитата Сообщение от healer191 Посмотреть сообщение
case c of:
При попытке запуска выдает: ошибка в выражении
0
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
12.06.2016, 12:22 6
Pascal
1
case c of {<-- двоеточие убрать}
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 8
12.06.2016, 12:30  [ТС] 7
Цитата Сообщение от ZX Spectrum-128 Посмотреть сообщение
case c of {<-- двоеточие убрать}
появляется вот такое окно,при нажатии любой клавиши закрывается и меня возвращает к коду.
Миниатюры
Азбука Морзе - при нажатии на клавишу выдать соответствующий сигнал  
0
Эксперт Pascal/Delphi
6809 / 4566 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
12.06.2016, 12:38 8
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Выход по ESC.

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
58
59
60
61
uses
  crt;
 
procedure point;
begin
  Sound(1000);
  Delay(200);
  NoSound;
  Delay(200)
end;
 
procedure dash;
begin
  Sound(1000);
  Delay(600);
  NoSound;
  Delay(200)
end;
 
var
  c: char;
 
begin
  repeat
  c := ReadKey;
  case c of
    'а': begin point; dash end;
    'б': begin dash; point; point; point end;
    'в': begin point; dash; dash end;
    'г': begin dash; dash; point end;
    'д': begin dash; point; point end;
    'e': begin point end;
    'ж': begin point; point; point; dash end;
    'з': begin dash; dash; point; point end;
    'и': begin point; point end;
    'й': begin point; dash; dash; dash end;
    'к': begin dash; point; dash end;
    'л': begin point; dash; point; point end;
    'м': begin dash; dash end;
    'н': begin dash; point end;
    'о': begin dash; dash; dash end;
    'п': begin point; dash; dash; point end;
    'р': begin point; dash; point end;
    'c': begin point; point; point end;
    'т': begin dash end;
    'у': begin point; point; dash end;
    'ф': begin point; point; dash; point end;
    'х': begin point; point; point; point end;
    'ц': begin dash; point; dash; point end;
    'ч': begin dash; dash; dash; point end;
    'ш': begin dash; dash; dash; dash end;
    'щ': begin dash; dash; point; dash end;
    'ъ': begin dash; point; point; dash end;
    'ы': begin dash; point; dash; dash end;
    'ь': begin dash; point; point; dash end;
    'э': begin point; point; dash; point end;
    'ю': begin point; point; dash; dash end;
    'я': begin point; dash; point; dash end;
  end;
  until c=#27;
end.
1
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 8
12.06.2016, 12:52  [ТС] 9
Спасибо большое всем тем кто помог...я,не знаю чтобы я без вас делал.
0
3030 / 1916 / 1649
Регистрация: 30.04.2011
Сообщений: 3,060
12.06.2016, 13:11 10
Цитата Сообщение от healer191 Посмотреть сообщение
при нажатии любой клавиши закрывается
Раскладку на русскую не переключил, поэтому и закрывается. В DosBox раскладка переключается нажатием правого Ctrl.

Добавлено через 4 минуты
Программа должна работать так:
1. Запуск (появляется окно как в твоем сообщении №7)
2. Нажатие кнопки (в русской раскладке)
3. Воспроизведение сигнала
4. Завершение работы
1
68 / 2 / 0
Регистрация: 09.06.2015
Сообщений: 210
13.06.2016, 11:17 11
Попробовал. Получил при компиляции:
fpc "proga.pas"
Free Pascal Compiler version 2.6.2-8 [2014/01/22] for i386
Target OS: Linux for i386
Compiling proga.pas
proga.pas(29,9) Error: Constant and CASE types do not match
proga.pas(29,9) Error: Ordinal expression expected
proga.pas(30,9) Error: Constant and CASE types do not match
proga.pas(30,9) Error: Ordinal expression expected
proga.pas(30,9) Error: duplicate case label
proga.pas(31,9) Error: Constant and CASE types do not match
proga.pas(31,9) Error: Ordinal expression expected
proga.pas(31,9) Error: duplicate case label
proga.pas(32,9) Error: Constant and CASE types do not match
proga.pas(32,9) Error: Ordinal expression expected
proga.pas(32,9) Error: duplicate case label
proga.pas(33,9) Error: Constant and CASE types do not match
proga.pas(33,9) Error: Ordinal expression expected
proga.pas(33,9) Error: duplicate case label
proga.pas(35,9) Error: Constant and CASE types do not match
proga.pas(35,9) Error: Ordinal expression expected
proga.pas(35,9) Error: duplicate case label
proga.pas(36,9) Error: Constant and CASE types do not match
proga.pas(36,9) Error: Ordinal expression expected
proga.pas(36,9) Error: duplicate case label
proga.pas(37,9) Error: Constant and CASE types do not match
proga.pas(37,9) Error: Ordinal expression expected
proga.pas(37,9) Error: duplicate case label
proga.pas(38,9) Error: Constant and CASE types do not match
proga.pas(38,9) Error: Ordinal expression expected
proga.pas(38,9) Error: duplicate case label
proga.pas(39,9) Error: Constant and CASE types do not match
proga.pas(39,9) Error: Ordinal expression expected
proga.pas(39,9) Error: duplicate case label
proga.pas(40,9) Error: Constant and CASE types do not match
proga.pas(40,9) Error: Ordinal expression expected
proga.pas(40,9) Error: duplicate case label
proga.pas(41,9) Error: Constant and CASE types do not match
proga.pas(41,9) Error: Ordinal expression expected
proga.pas(41,9) Error: duplicate case label
proga.pas(42,9) Error: Constant and CASE types do not match
proga.pas(42,9) Error: Ordinal expression expected
proga.pas(42,9) Error: duplicate case label
proga.pas(43,9) Error: Constant and CASE types do not match
proga.pas(43,9) Error: Ordinal expression expected
proga.pas(43,9) Error: duplicate case label
proga.pas(44,9) Error: Constant and CASE types do not match
proga.pas(44,9) Error: Ordinal expression expected
proga.pas(44,9) Error: duplicate case label
proga.pas(45,9) Error: Constant and CASE types do not match
proga.pas(45,9) Error: Ordinal expression expected
proga.pas(45,9) Error: duplicate case label
proga.pas(47,9) Error: Constant and CASE types do not match
proga.pas(47,9) Error: Ordinal expression expected
proga.pas(47,9) Error: duplicate case label
proga.pas(47,9) Fatal: There were 50 errors compiling module, stopping
Fatal: Compilation aborted
Сборка завершилась с ошибкой.
Error: /usr/bin/ppc386 returned an error exitcode (normal if you did not specify a source file to be compiled)
Почему-то спойлер не работает - не раскрывается.
0
Модератор
Эксперт по электронике
8382 / 4263 / 1619
Регистрация: 01.02.2015
Сообщений: 13,271
Записей в блоге: 5
13.06.2016, 11:36 12
Может быть, вы сохранили исходник в файл с кодировкой UTF-8.
0
68 / 2 / 0
Регистрация: 09.06.2015
Сообщений: 210
13.06.2016, 17:14 13
Таки да. А это сильно влияет?

Добавлено через 15 минут
Менял кодировку. Менял сами буквы на латинские. В линуксе пиликать не хочет. Просто тишина.
Жаль
0
13.06.2016, 17:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2016, 17:14
Помогаю со студенческими работами здесь

Азбука Морзе
Написал программку азбуки морзе, пишешь сообщение, а она выводит как последовательность точек и...

Азбука Морзе
Здрасти) вот такая вот задачка.... дан файл записанный азбукой Морзе (между буквами слова стоит 1...

Азбука Морзе
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; //#include &lt;PROCESS.H&gt; main(){ int...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru