Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






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





Это обычная задача поиска максимума, и при анализе слов очередное текущее слово с большей длиной необходимо присвоить результирующему слову. Но в этом случае RezSlovo:= TekSlovo приведет к пересылке одного массива символов на место другого. Если длины последовательно нарастают, то придется пересылать большое количество слов. Если же использовать указатели на динамические массивы, то RezSlovo:= TekSlovo не требует пересылки массивов, а вызывает только присваивание указателю RezSlovo ссылки на тот массив, в котором размещается найденное слово максимальной длины. Поменяв указатели предпишем вводить очередное слово в тот массив, на который сначала ссылался указатель RezSlovo.

Type

Massiv = Array [ 1.. 100 ] of char;

Ukaz = ^ Massiv;

Var

RezSlovo: Ukaz; {указатель на слово максимальной длины}

TekSlovo: Ukaz; {указатель на текущее слово}

R: Ukaz; {указатель на промежуточное слово}

Max, i, K: Integer; {счетчики букв}

Smv: Char;

Begin

Max:= -1; i:= 0; {i - счетчик букв в слове}

New(TekSlovo); New(RezSlovo);

{ ввод текста и определение длины каждого слова }

WriteLn('Введите слова через запятую, в конце - точка');

Repeat

Read(Smv);

if (Smv <> ',') And (Smv <> '.') then

Begin

i:= i + 1; TekSlovo^[i]:= Smv

End

else {сравнение длины текущего слова с максимальной}

Begin

if i > Max then

Begin

Max:= i; {сохранили максимальную длину слова}

R:= RezSlovo;

RezSlovo:= TekSlovo;

TekSlovo:= R

end;

i:= 0

End

until Smv = '.';

 

WriteLn;

WriteLn('Введите букву, частоту появления которой ',

'необходимо определить');

ReadLn;

Read(Smv); { чтение заданной буквы }

K:= 0; { подсчет числа вхождений заданной буквы в самое длинное слово}

for i:= 1 to Max do

if Smv = RezSlovo^[i] then

K:= K + 1;

WriteLn ('В 1-ое по порядку слово наибольшей длины:');

for i:= 1 to Max do

Write(RezSlovo^[i]);

WriteLn;

WriteLn ('Число появлений буквы "', Smv, '" равно', K:3);

{уничтожаем динамические объекты}

Dispose(TekSlovo);

Dispose(RezSlovo)

End.

 

В упражнениях 10.2 — 10.14 использовать (линейные) однонаправленные списки при следующем их описании:

Type

Spisok = ^Zveno;

Zveno = record

Elem: TypeElem;

Next: Spisok

end;

При этом параметры L, LI и L2 обозначают списки, а параметры Е, El и Е2— данные типа TypeElem, к которым применимы операции присваивания и проверки на равенство. TypeElem — тип элементов списка, уточняемый, если надо, в упражнениях.

10.2. Описать функцию или процедуру, которая:

а) определяет, является ли список L пустым;

б) находит среднее арифметическое элементов непустого списка L (TypeElem — real);

в) заменяет в списке L все вхождения E1 на Е2;

г) меняет местами первый и последний элементы не­пустого списка L;

д) проверяет, упорядочены ли элементы списка L по алфавиту (TypeElem = 'a'.. 'z');

е) находит сумму последнего и предпоследнего элемен­тов списка L, содержащего не менее двух элементов (TypeElem = integer).

10.3. Пусть в программе введено описание типа:

Type

слово = array [1..10] of char;

TypeElem = слово;

Описать функцию, подсчитывающую количество слов спис­ка L, которые;

а) начинаются и оканчиваются одной и той же литерой;

б) начинаются с той же литеры, что и следующее слово;

в) совпадают с последним словом.

10.4. Описать процедуру, которая по списку L строит два новых списка: L1 — из положительных элементов и L2 — из остальных элементов списка L (TypeElem = Rеаl).

10.5. Описать процедуру, которая вставляет:

а) в начало списка L новый элемент Е;

б) в конец списка L новый элемент E;

в) новый элемент Е после первого элемента непустого списка L;

г) в список L новый элемент E1 за каждым вхождением элемента Е;

д) в список L новый элемент Е1 перед первым вхож­дением элемента Е, если Е входит в L;

е) в непустой список L пару новых элементов Е1 и Е2 перед его последним элементом;

ж) в непустой список L, элементы которого упорядо­чены по неубыванию, новый элемент Е так, чтобы сохра­нилась упорядоченность (TypeElem = Real).

10.6. Описать процедуру, которая удаляет:

а) из непустого списка L первый элемент;

б) из списка L второй элемент, если такой есть;

в) из списка L за каждым вхождением элемента Е один элемент, если такой есть и он отличен от Е;

г) из непустого списка L последний элемент;

д) из списка L первый отрицательный элемент, если такой есть (TypeElem = Integer);

е) из списка L все отрицательные элементы (TypeElem = Real).

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

10.8. Дана непустая последовательность натуральных чисел, за которой следует 0. Напечатать порядковые номера тех чисел последовательности, которые имеют наибольшую величину.

10.9. Дано целое n > 1, за которым сле­дует n вещественных чисел. Напечатать эти числа в порядке их неубывания.

10.10. Описать процедуру или функцию, которая:

а) проверяет на равенство списки L1 и L2;

б) определяет, входит ли список L1 в список L2;

в) проверяет, есть ли в списке L хотя бы два одина­ковых элемента;

г) переносит в конец непустого списка L его первый элемент;

д) переносит в начало непустого списка L его послед­ний элемент;

е) добавляет в конец списка L1 все элементы списка L2;

ж) вставляет в список L за первым вхождением эле­мента Е все элементы списка L1, если Е входит в L;

з) переворачивает список L, т. е. изменяет ссылки в этом списке так, чтобы его элементы оказались распо­ложенными в обратном порядке;

и) в списке L из каждой группы подряд идущих рав­ных элементов оставляет только один;

к) оставляет в списке L только первые вхождения оди­наковых элементов.

10.11. Описать рекурсивную функцию или процедуру, которая;

а) определяет, входит ли элемент Е в список L;

б) подсчитывает число вхождений элемента Е в список L;

в) находит максимальный элемент непустого списка L (TypeElem = Real);

г) печатает в обратном порядке элементы списка L (TypeElem = Char);

д) заменяет в списке L все вхождения E1 на E2;

е) удаляет из списка L первое вхождение элемента E, если такое есть;

ж) удаляет из списка L все вхождения элемента Е;

з) строит L1 — копию списка L;

и) удваивает каждое вхождение элемента Е в список L ;

к) находит среднее арифметическое всех элементов непустого списка L (TypeElem = Real).

10.12. Описать процедуру, которая формирует список L, включив в него по одному разу элементы, которые:

а) входят хотя бы в один из списков L1 и L2;

б) входят одновременно в оба списка L1 и L2;

в) входят в список L1, но не входят в список L2;

г) входят в один из списков L1 и L2, но в то же время не входят в другой из них.

10.13. Описать процедуру, которая объединяет два упорядоченных по неубыванию списка L1 и L2 (TypeElem = Real ) в один упорядоченный по неубыванию список:

а) построив новый список L;

б) меняя соответствующим образом ссылки в L1 и L2 и присвоив полученный список параметру L1.

10.14. Дан текст, оканчивающийся точкой, причем подряд следует не более 9 одинаковых символов. Требуется перед каждой группой одинаковых символов вставить цифру, равную числу символов в группе, удалив повторные вхождения букв.

Например: из строки "ППАААССССККАЛЛЛЛЛЬЬЬЬ."

получим строку "2П3А4С2К1А5Л4Ь."

Date: 2015-07-23; view: 571; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию