Тема «Структурированные типы данных. Массивы»

Знать: Видыструктурированных типов данных. Правила описания массивов; способы заполнения массивов, основные алгоритмы обработки массивов.

Уметь: Описывать и заполнять массивы; осуществлять поиск, сортировку, обработку элементов массива.

Цели: 1. Познакомить с понятием массива.

2. Освоить способы по созданию массивов в памяти и обработке массивов).

Массив - это совокупность данных одного типа. (Пассажиры, зрители, ученики 11 А класса и т.д. Массивы бывают одномерные (в одну строку или столбец); Двумерные (несколько строк и столбцов)

Массив имеет:

ИМЯ - латинские буквы или буквы с цифрой, например: A. MAS. FAM. ROST

РАЗМЕРНОСТЬ А[1..5]- 5 элементов, FAM [I..25] -25 фамилий

 

При описании массива ему резервируется память под заданное количество элементов. Var

FAM: ARRAY [I..25] of String[10]; -25 фамилий до 10 букв длиной каждая

God : ARRAY [ I ..25] of Integer; - Год рождения для 25 учеников

Ос : ARRAY[1..7.1..25]ofByte;

Обращение к элементам массива производится по имени массива и номеру его элемента (пассажир с 12 места, зритель с 3 ряда 16 места и т.д.)- FAM[1], God[l] - фамилия и год рождения первого ученика.

 

Способы заполнения массивов.

1. Задаются в программе FAM[1]:='Абрамов ":God[l]:=1988;Oc[l.l]:=5:

2. В разделе CONST
CONST

Fam=ARRAY[ 1.4] OF String[ 10] = ("Абрамов'.'Белецкая','Борисов'.'Витрук');

3. Задаются вводом с клавиатуры (Так как массив состоит из нескольких
элементов количество которых заранее известно, то их удобнее задавать
и обрабатывать в цикле FOR(цикле со счетчиком) ).
For l:=l T0 4 Do

Begin

Write Ln('Задайте фамилию');

ReadLn(Fam[l]); End;

4. Чтение из файла.

Assign(F,'C: Student.dal'); {установили связь между именем файла F в программе и физическим именам I

Reset(F): {Открыли файл для чтения)

For l:=l ТО 4 Do ReadLn(f.A[l]); {Прочитали из файла на диске' С:'

Student.dat' 4 элемента и занесли их в массив А}

5. Задаются датчиком случайных чисел

Randomize: [Подключили генератор случайных чисел}

Forl:=I TO 4 Do

Begin

A[l]:=Random( 100); { задается случайное число от 0 до 99.)

WriteLn(A[l]):

end;

6. Рассчитываются по формуле

For I:=l ТО 4 Do A[I]:=B[1]*C[I]; [элемент массива А равен произведению

элементов массивов В и С}

Основные типы задач на обработку массивов.

 

Массивы используются при обработке большого количества однотипных данных. Типовые алгоритмы:

ü Замена элементов массива.

ü Поиск произведения, суммы, количества элементов массива.

ü Поиск max, min элементов массива.

ü Сортировка элементов массива.

Задача

Воздушный шар упадет, если общий вес 8 ящиков (каждый до 10) кг больше 50 килограмм. Определить средний вес ящика, самый тяжелый ящик. Все ящики тяжелее среднего заменить на минимальный вес.

Программа.

Program C'ircl;

Var

Ves:array [ l..8] of real;

Min.Max.Mid.Sum:real;

I: Integer;

Begin

Max:=0;

Sum:=0;

For l:=l to 8 Do

Begin

Ves [i]:=Random( 10)+1: (Вес задается случайным числом от I до 10)
Writeln(‘Вес ящика с номером ', I , 'равен ‘, Ves[i]);
Sum:=Sum+Ves|i|; { считаем бишй нес}

End;

For l:=l to 8 Do Begin

If Ves[i]<Min Then Min:=Ves[i]: {Поиск минимального значения}

If Ves[i]>Max Then Max:=Ves[i]: {Поиск максимального значения)

End;

Writel.n('Самый легкий ящик’,Min);

Writeln('Самый тяжелый яшик ', Max);

Mid:= Sum/8; {Определение среднего веса}

For I:=M to 8 Do \

Begin

If Ves[i]> Min then Ves[i]:=Min; {Замена элементов на минимальный }
WrheLn (‘для полета нужно взять яшик номер’,I,’ с весом ', Ves[i]);
Sum:=Sum- Ves[I]:{Определяем вес ящиков после замены) -.

End;

It'Siim<50 Then WrileLn(‘ шар взлетит’);
End.