1.1.10 Работа с массивами
Считывание (ввод) одномерного массива известной длины из файла
Var x: array [1..20] of real;
i: integer;
f: text;
Begin
Assign(f, ‘NameFile.dat’);
Reset(f);
for i:=1 to 20 do
Read(f, x[i]);
Close(f);
End.
Считывание одномерного массива неизвестной длины из файла, определение размера массива
Var x: array [1..100] of real;
i,N: integer;
f: text;
Begin
Assign(f, ‘NameFile.dat’);
Reset(f);
i:=0;
While not Eof(f) do
begin
i:=i+1;
Read(f, x[i]);
end;
N:=i1;
Close(f);
End.
Запись (вывод) одномерного массива в файл
Var x: array [1..20] of real;
i,N: integer;
f2: text;
Begin
Assign(f2, ‘NameFile.rez’);
ReWrite(f2);
for i:=1 to 20 do
Write(f2, x[i]:10:3);
Close(f2);
End.
При выводе массива числа записываются подряд, поэтому необходимо всегда делать форматный вывод (см. п.1.1.7).
Вычисление наибольшего элемента одномерного массива
Var x: array [1..100] of real;
max: real;
i,N, Nmax: integer;
Begin
max:=x[1];
for i:=2 to N do
if (x[i]>max) then
begin
max:=x[i];
Nmax:=i;
end;
End.
В результате работы программы вычисляется значение max, равное наибольшему элементу массива и Nmax – номер наибольшего элемента. Необходимо учесть, что эта программа не печатает значения. Для печати необходимо использовать оператор Write.
Для нахождения минимального (наименьшего) элемента программа аналогичная, только для удобства вводятся переменные min, Nmin и в условном операторе if изменяется условие: if (x[i]<min) then…
Нахождение массива, состоящего из определенных элементов исходного массива
j:=0;
n2:=0;
for i:=1 to n do
if (Условие) then
begin
j:=j+1;
b[j]:=a[i];
end;
n2:=j;
В результате получаем массив b, содержащий элементы исходного массива, удовлетворяющие «Условию» и число n2 – количество элементов полученного массива. Условие определяется в зависимости от поставленной задачи. Некоторые примеры условий представлены в таблице 1.8.
Таблица 1.8 Определение «Условия»
Условие задания | «Условие» в программе | Тип элементов массива |
Найти положительные элементы | a[i] > 0 | Для целых и действительных типов |
Найти отрицательные элементы | a[i] < 0 | |
Найти неположительные элементы | a[i] ≤ 0 | |
Найти неотрицательные элементы | a[i] ≤ 0 | |
Найти четные элементы | a[i] mod 2 = 0 или not odd(a[i]) | Только для целых типов |
Найти нечетные элементы | a[i] mod 2 <> 0 или odd(a[i]) | |
Найти все элементы, делящиеся на n | a[i] mod п = 0 | |
Найти все элементы, не делящиеся на n | a[i] mod п <> 0 |
Нахождение первого положительного элемента массива
Var
a: mass;
i, Num, firstPol: integer;
Begin
Num:=0;
firstPol:=0;
for i:=1 to n do
if a[i] > 0 then
begin
firstPol:= a[i];
Num:=i;
Break;
end;
if firstPol = 0 then
WriteLn(‘Net poloz. elementov’);
End.
Для нахождения первого отрицательного элемента, первого четного элемента и т.д. необходимо только изменить условие.
Нахождение последнего положительного элемента массива
Программа аналогична предыдущей, только перебор значений элементов массива необходимо проводить не с начала, а с конца:
for i:=n downto 1 do
и т.д.
Сортировка одномерного массива по возрастанию
for i:=1 to N–1 do
for j:=i+1 to N do
if a[i]>a[j] then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
В результате работы программы заданный массив пересортировывается в порядке возрастания. При этом начальный массив не сохраняется.
Для сортировки по убыванию необходимо изменить условие в операторе if.
- 1.1 Теоретические сведения
- 1.1.1 Структура программы в языке Паскаль
- 1.1.2 Основные типы данных
- 1.1.3 Оператор присваивания
- 1.1.4 Арифметические выражения
- 1.1.5 Логические выражения
- 1.1.6 Основные стандартные функции языка Паскаль
- 1.1.7 Основные функции ввода/вывода
- 1.1.8 Операторы цикла
- 1.1.9 Операторы перехода (безусловный и условные)
- 1.1.10 Работа с массивами
- 1.1.11 Процедуры и функции. Модули.
- 1.1.11.1 Модуль System
- 1.1.11.2 Модуль Crt
- Порядок выполнения работ
- Лабораторная работа №5. Работа с двумерными массивами
- Лабораторная работа №6. Программирование с использованием подпрограмм
- Содержание
- 1.1 Теоретические сведения 1