Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Пояснения к программе

Читайте также:
  1. В стоимость тура входит: переезд Тюмень-Абзаково-Тюмень, проживание 6 и 5 суток (по программе), завтраки, мед. страховка.
  2. ГЛАВА IV ПРОДОЛЖЕНИЕ. ДОПОЛНИТЕЛЬНЫЕ ПОЯСНЕНИЯ ЭНГЕЛЬСА
  3. ЗаявкА на участие в программе зимней школы
  4. Особые пояснения к указанным в манифесте требованиям к законодательству
  5. Отметьте правильные утверждения и дайте необходимые пояснения.
  6. По программе 38.03.02 Менеджмент (уровень бакалавриата)
  7. Понятие о программе КСИ и характеристика ее функции

Это обычная задача поиска максимума, и при анализе слов очередное текущее слово с большей длиной необходимо присвоить результирующему слову. Но в этом случае 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, за которым сле­дует п вещественных чисел. Напечатать эти числа в порядке их неубывания.

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Ь."


Дата добавления: 2015-07-08; просмотров: 517 | Нарушение авторских прав


Читайте в этой же книге: Пояснения к программе | Пояснения к программе | Одномерные массивы | Матрицы | Пояснения к программе | Обработка текстов | Пояснения к программе | Процедуры и функции | Пояснения к программе | Пояснения к программе |
<== предыдущая страница | следующая страница ==>
Множества| Комбинации клавиш управления в среде Turbo Pascal

mybiblioteka.su - 2015-2024 год. (0.011 сек.)