Контрольные работы / 1- 6_Информационные технологии данных
.doc
Контрольная работа №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.
На экране при выполнении программы пользователь видит следующее:
При введении произвольной строки на экране выдается результат, соответствующий заданию.
Результат выполнения программы.
При введении, например, такой строки: «абсолютно любая строка» на экран выведется заглавная буква «А».