Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Банк олимпиадных заданий.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
374.86 Кб
Скачать

Площади покрытия антенны

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

Задание. Вычислить площадь покрытия для антенны, если известен радиус действия радиопередающего устройства, не превышающий 12000 м, а круговая диаграмма направленности антенны представляет собой окружность.

Входной файл input.txt содержит число – радиус действия (в метрах).

В выходном файле output.txt формируется число, обозначающее площадь покрытия антенны.

Пример входных и выходных данных

input.txt

output.txt

4

5.02654824574367E+001

Площадь покрытия решение

Необходимо найти площадь круга заданного радиуса r.

program Ploschad;

var t: text;

r, S: real; // r – радиус круга, S – площадь покрытия антенны

begin

assign (t,'input.txt'); // связываем переменную с файлом ввода данных

reset (t); // открыть файл для чтения

read (t,r); // считываем данные

close(t); // закрываем файл – данные считаны

S := Pi*r*r; // расчет пощади

assign (t,'output.txt'); // связываем переменную с файлом вывода данных

rewrite (t); // перезаписываем данные

write (t, S); // записываем данные в файл вывода данных

close(t); // закрываем файл

end.

Элементы лексического и синтаксического разбора Шифровка

Группа мальчишек играла во дворе в разведчиков. Чтобы передать, друг другу шифровки, дети использовали несложный шифр. Они оставляли в секретных местах листовки с написанным текстом. Зашифрованное слово должно было содержать отсутствующие в тексте буквы латинского алфавита.

Задание. Напишите программу, которая определяет, какие именно латинские буквы отсутствуют в исходном тексте.

Входные данные. В единственной строке входного файла SHIFR.TXT находятся заглавные буквы латинского алфавита. Количество букв в строке не более 255.

Выходные данные. Выходной файл OUTSHIFT.TXT должен содержать 1 строку латинских букв. Каждая буква повторяется единожды.

Пример входных и выходных данных:

SHIFR.TXT

OUTSHIFR.TXT

QJZWSXEDCFTGBYHNUMIK

ALOPRV

Шифровка Решение

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

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

Множество букв представим типом chars = set of char. Множество букв, которые встречаются в тексте, получим путём добавления каждой прочитанной буквы к множеству, а множество оставшихся букв (absend) – как разницу между множествами всех латинских букв (lats) и букв первого множества (present). Образование множества латинских букв текста оформим процедурой textLets. Перебор и печать символов, не принадлежащих множеству present, оформим процедурой writeSet.

program shifrovka;

type chars = set of char; //объявление типа множества

procedure textLets(var st: chars; const GlobSet: chars); //процедура формирования множества латинских букв текста

var f: text; c: char;

begin

assign(f,'SHIFR.txt'); //назначение входящей файловой переменной

reset(f); //открытие файла для чтения

st:=[]; //начальное значение символьного множества

while not eof(f) do begin //пока не достигнет конца входящего файла

read (f,c); //читаем содержимое входящего файла

if c in GlobSet then st:=st+[c];

end;

close(f);

end;

procedure writeSet(const st:chars); //формирование процедуры перебора и печати множества букв

var f1:text; c:char;

begin

assign(f1, 'OUTSHIFR.txt'); //назначение файловой переменной

rewrite (f1); //открываем файл в режиме замещения существующего

for c:=#0 to #255 do

if c in st then write (f1,c);

close(f1); //закрываем файл

end;

const lats:chars=['A'..'Z']; //задаём все заглавные латинские буквы

var present, absend: chars;

begin

textLets (present, lats); //вызов процедуры формирования 1-го множества

absend:=lats-present; //поиск множества букв не входящих в 1-е множество

writeSet(absend); //вызов процедуры перебора и печати символов 2-го множества

end.