Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Контрольные работы / 1- 6_Информационные технологии данных

.doc
Скачиваний:
72
Добавлен:
23.06.2014
Размер:
96.26 Кб
Скачать

Контрольная работа №1

Задана строка символов.

Группы символов, разделенные пробелом и не содержащие пробелов внутри себя, будем называть словами. Вывести все буквы, которые входят в наибольшее количество слов строки. Все выводимые буквы преобразовать в прописные. Например, задана строка: ‘Я учусь программировать на языке Турбо - Паскаль’ Результат работы программы: Ь

Листинг программы:

program Project1; {Заголовок программы}

uses crt; {Используемые модули}

function UpCase2(Ch: Char): Char; {Функция перевода строчных букв в заглавные}

begin

case Ch of

'a'..'z': UpCase2 := Chr(ord('A')+ord(Ch)-ord('a')); {Для латиницы}

'a'..'n': UpCase2 := Chr(ord('A')+ord(Ch)-ord('a')); {Для кириллицы}

'p'..' ': UpCase2 := Chr(ord('P')+ord(Ch)-ord('p')); {Для кириллицы}

else

UpCase2:= Ch

end

end;

function GetStrAb(const aStrSrc : String) : String; {Функция разделения слов}

const

Delims = [' ', '.', ',', ':', ';', '!', '?', '-', Char(9)]; {Символы разделения}

var

StrRes : String;

ArrAbText : array['а'..'я'] of Integer;

ArrAbText2 : array['А'..'Я'] of Integer;

StrAbWord : String;

CharMax : Char;

CharTmp : Char;

i, j : Integer;

Pos2 : Integer;

begin {Реализация разделения слов в предложении}

for CharTmp := Low(ArrAbText) to High(ArrAbText) do ArrAbText[CharTmp] := 0;

StrRes := '';

StrAbWord := '';

Pos2 := 0;

for i := 1 to Length(aStrSrc) do begin

if aStrSrc[i] in Delims then Continue;

CharTmp := UpCase(aStrSrc[i]);

if Pos(CharTmp, StrAbWord) = 0 then StrAbWord := StrAbWord + CharTmp;

if i = Length(aStrSrc) then

Pos2 := i

else if aStrSrc[i + 1] in Delims then

Pos2 := i;

if Pos2 > 0 then begin

for j := 1 to Length(StrAbWord) do Inc( ArrAbText[ StrAbWord[j] ] );

StrAbWord := '';

Pos2 := 0;

end;

end;

CharMax := Low(ArrAbText);

for CharTmp := Low(ArrAbText) to High(ArrAbText) do begin

if ArrAbText[CharTmp] > ArrAbText[CharMax] then CharMax := CharTmp;

end;

StrRes := '';

for CharTmp := Low(ArrAbText) to High(ArrAbText) do begin

if ArrAbText[CharTmp] = ArrAbText[CharMax] then StrRes := StrRes + UpCase2(CharTmp);

end;

GetStrAb := StrRes;

end;

var

StrSrc : String; {Параметры, с которыми вызываются подпрограммы}

StrRes : String;

StrTmp : String;

begin

clrscr;

Writeln('Vvedite stroku:'); {Вывод сообщения}

Readln(StrSrc); {Ввод строки}

StrRes := GetStrAb(StrSrc); {Запуск функции с параметрами}

write('-----------------------'); {Вывод сообщения}

Writeln('Rezultat:'); {Вывод сообщения}

Writeln(StrRes); {Вывод букв, наиболее часто встречающихся в строке}

Readln;

end.

На экране при выполнении программы пользователь видит следующее:

При введении произвольной строки на экране выдается результат, соответствующий заданию.

Результат выполнения программы.

При введении, например, такой строки: «абсолютно любая строка» на экран выведется заглавная буква «А».