Иллюстрированный самоучитель по Turbo Pascal для начинающих

Решения (задачи 165-188)

Задача 174

(Игра "Угадай число" }
const
N=3; { уровень сложности – количество цифр в числ
igrok: array[1..N]of char; { комбинация игрока } comp:
array[1..N]of char; { комбинация компьютера }
a: – arrayfl..N] of boolean;
{ a[i]= TRUE, если i-я цифра компьютера совпала с одной из цифр игрока }
ugad:integer;{ угадано чисел }
mesto:integer;{ из них на своих местах }
i/ji integer; { индексы массива }begin
writeln('Компьютер задумал трехзначное число. ',
'Вы должны его отгадать.'); writeln('После ввода очередного числа, вам будет ',
'сообщено, сколько цифр'); writeln('угадано и сколько из них находятся ',
'на своих местах. '); writeln('После ввода числа нажимайте Enter.');
{ компьютер "задумывает" свое число }
randomize;
for i: = l to N do
compfi]: = chr(random(lO)+48); (48 – код символа '0' }
write('Компьютер задумал: '); for i: = l to N do write(comp[i]); writeln;
repeat
write('Ваш вариант › '); {получить вариант игрока }
for i: = l to N-l do read(igrok[i]); readln(igrok[N]);for i: = l to N do a[i]: = FALSE;
(a[i] = TRUE, если i-я цифра числа компьютера
совпала с одной из цифр числа игрока }
{ проверим, сколько цифр угадано } ugad: = 0;
for i: = l to N do { проверим каждую цифру игрока } for j: =1 to N do begin
if (igrok[i] = comp[j]) and not a[j] then begin
ugad: = ugad+l;
a[j]: = TRUE; { запретим сравнивать
эту цифру компьютера с оставшимися, еще не проверенными цифрами игрока } end; end;
{ проверим, сколько на своих местах }
mesto: = 0;
for i: = l to N do
if igrok[i] = comp[i] then mesto: = mesto+l;
writeln('Угадано:',ugad,'. На своих местах:',mesto);
until (ugad < N) and (mesto = N); writeln('***ВЫ УГАДАЛИ ЧИСЛО!***');
write('Нажмите Enter для завершения.');
readln; end.

Задача 175

{ Телеграф – передача сообщений при помощи азбуки Морзе.
{ Замечание: возможно надо увеличить величины задержек. } uses Crt; const
morse: array[128..159] of string[4] =(
I I _
/
I 1 f
I I
I I _ f
1 I
I
I I
. I >>___
I I /
1 1 /
_ I I _
1 1 f
I 1 I.
. 1 f.
{А,Б,В,Г}
{Д,Е,Ж,3} {И,Й,К,Л} {М,Н,О,П} {Р,С,Т,У} {Ф,Х,Ц,Ч} {Ш,Щ,Ъ,Ы} {Ь,Э,Ю,Я}
{параметры передачи }
TONE=100; { частота сигнала (гц) }
L1=50; { длительность (мс) "точки")
L2=100; (длительность (мс) "тире"}
L3=50; { пауза (мс) между точками и тире одной буквы }
L4=100; { пауза (мс) между буквами }
L5=150; { пауза (мс) между словами }
var
rues: string; sim: string[4];
{ сообщение }
(символ в кодировке Морзе –
последовательность точек и тире }
{ "передаваемый" знак – тире или точка { номер символа и знака }
znak: string[l] i,j: integer; in
ClrScr;
writelnC*** Телеграф ***');
writeln('Введите сообщение, которое надо передать');
writeln('(используйте только большие русские буквы)');
write(' › ');
readln(mes);
for i: = l to Length(mes) do
begin
if (mes[i] >= 'A') and (mes[i] <='Я') then begin
(определим код очередной буквы (ф-я Ord) сообщения и получим
из таблицы кодировки соответствующий элемент массива – последовательность
точек и тире sim: = morse[ord(mes[i])]; repeat
if (sim[j] =. -.) or (sim[j] = begin
write (sim[j]); sound(1000); case sim[j] of 1.': Delay(50); '-': Delay(lOO); end;
NoSound; Delay(50); end;
then
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.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.