
- •Оглавление
- •Этапы разработки программы
- •Оформление решения
- •Структура программы
- •Характеристики программы
- •Типы данных
- •Целые числа
- •Вещественные числа
- •Контрольные вопросы
- •Лабораторная работа № 2 Алфавит языка Паскаль. Операторы языка
- •Теоретические сведения Алфавит языка
- •Специальные символы
- •Составные символы
- •Зарезервированные слова
- •Стандартные функции и процедуры языка
- •Комментарии и директивы
- •Операторы
- •Простые операторы
- •Структурные операторы
- •Полезные формулы
- •Запись числовых констант, переменных и выражений
- •Контрольные вопросы
- •Лабораторная работа № 3 Программирование алгоритмов линейной структуры
- •Теоретические сведения
- •Задание к работе
- •Пример выполнения работы
- •Варианты заданий
- •Задание 2
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Примеры задач Программа 1
- •Программа 2
- •Программа 3
- •Варианты заданий
- •Задание2
- •Примеры задач Программа 1
- •Программа 2
- •Программа 3
- •Варианты заданий
- •Алгоритм цикла с предусловием – While
- •Алгоритм цикла с постусловием Repeat
- •Алгоритм цикла со счетчиком For
- •Практические примеры Задачи с использованием оператора while
- •Задачи с использованием оператора repeat
- •Задачи с использованием оператора for
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа № 7 Программирование алгоритмов со структурой вложенных циклов
- •Теоретические сведения
- •Практические примеры
- •Задачи для решения
- •Лабораторная работа № 8 Обработка одномерных массивов
- •Теоретические сведения
- •Обработка массивов
- •Действия с одномерными массивами
- •Практические примеры
- •Варианты заданий
- •Контрольные вопросы
- •Что представляет собой массив в Pascal'е?
- •Лабораторная работа № 9 Обработка двумерных массивов, матрицы
- •Теоретические сведения
- •Описание массива
- •Заполнение массива данными (ввод элементов)
- •Вывод массива
- •Обработка массивов
- •Квадратная матрица
- •Транспонирование матрицы
- •Практические примеры
- •Варианты заданий
- •Сформировать матрицу по следующему правилу
- •Контрольные вопросы
- •1. Как можно описать следующий массив?
- •2. В какой ячейке находится элемент d[2,6] ?
- •3. Каким образом выведется массив на экран монитора?
- •4. Сколько элементов находится в массиве х(4;7):
- •Метод линейной сортировки
- •Сортировка методом «пузырька»
- •Практические примеры
- •Варианты заданий
- •Практические примеры
- •Варианты заданий
- •Практические примеры
- •Шифрование и дешифрование текста
- •Варианты заданий
- •Контрольные вопросы
- •Порядок выполнения лабораторных работ
- •Содержание пояснительной записки
- •Литература
Обработка массивов
Часто требуется вычислить сумму элементов массива, их среднее арифметическое значение или найти значения и номера максимального и минимального элементов, а также изменить значения элементов массива и т.д. При этом для одномерного и двумерного массива используются аналогичные алгоритмы, но в случае двумерного массива требуются вложенные циклы .
Действия с одномерными массивами
В векторе а содержится n элементов
Вычисление суммы элементов
s:=0;
for i:=1 to n do s:=s+a[i];
Вычисление произведения элементов
s:=1;
for i:=1 to n do s:=s*a[i];
Подсчет количества элементов, удовлетворяющих некоторому условию
k:=0;
for i:=1 to n do
if a[i] mod 2=0 then k:=k+1;
Поиск элемента с заданным значением.
Например, найдем номер первого элемента массива а, имеющего нулевое значение. Если таких элементов нет, то выдать сообщение.
i:=0;
repeat
i:=i+1;
until(a[i]=0) or (i=n)
if a[i]=0 then writeln(‘номер первого нулевого элемента’,i)
else writeln(‘таких элементов нет’);
Поиск максимального элемента и его номера
max:=a[1]; k:=1;
for i:=2 to n do
begin
if a[i] > max then
begin
max:=a[i];k:=I;
end;
Практические примеры
Программа 1
В данном одномерном массиве найти количество положительных, отрицательных и нулевых элементов, имеющих номера позиций кратные трем.
program zadacha_1;
uses crt;
var
a: array [1..100] of integer; {массив чисел}
i: integer;{индекс}
k1,k2,k3: integer; {количество положительных, отрицательных, нулевых элементов}
n: integer; {количество элементов массива}
begin
clrscr;
write('Введите количество элементов в массиве');
readln(n);
for i:=1 to n do
begin
writeln('a[',i,']=');
readln (a[i]);
end;
for i:=1 to n do
begin
if (i mod 3=0) and (a[i] < 0) then
k1:=k1+1;
if (i mod 3=0) and (a[i]=0) then
k2:=k2+1;
if (i mod 3=0) and (a[i] > 0) then
k3:=k3+1;
end;
writeln('Количество отрицательных элементов и номером
позиции кратным трем – ',k1);
writeln('Количество элементов равных нулю и номером
позиции кратным трем – ',k2);
writeln('Количество элементов больше нуля и номером
позиции кратным трем – ',k3);
readln;
end.
Программа 2
Найти максимальный элемент одномерного массива.
program zadacha_2;
uses crt;
var
a: array [1..50] of integer;
i,j,k,n,max:integer;
begin
clrscr;
writeln ('Введите количество элементов в массиве');
readln (n);
for i:=1 to n do
begin
write ('a[',i,']=');
readln (a[i]);
end;
max:=a[1];
for i:=1 to n do
begin
if a[i] > max then
begin
max:=a[i];
end;
end;
writeln ('max=', max);
readln;
end.
Программа 3
Дана последовательность из шести вещественных чисел. Найти в этой последовательности некоторое число.
program zadacha_6;
uses crt;
const
n=6;
a:array [1..n] of real=(12.3, 42, 15.6, 10, 4.25, 2);
var
i: integer;
j: real;
begin
clrscr;
write ('введите искомое число');
readln (j);
i:=0;
for i:=1 to n do
begin
if j=a[i] then
writeln ('число', a[i]:4:2,' на ', i,'-м месте')
else
writeln ('такого числа на ' , i,'-м месте нет');
end;
i:=i+1;
readln;
end.
Программа 4
Найти минимальное среди чисел, расположенных на четных позициях некоторой последовательности.
program zadacha_4;
uses crt;
var
a: array [1..100] of integer;
i,j,k,n, min: integer;
begin
clrscr;
writeln('Введите количество элементов массива');
readln(n);
for i:=1 to n do
begin
writeln ('a[',i,']=');
readln(a[i]);
end;
min:=a[1];
for i:=1 to n do
begin
if (i mod 2 =0) and (a[i] < min) then
begin
min:=a[i];
end;
end;
writeln ('min=',min);
readln;
end.
Программа 5
Дана последовательность пяти целых чисел. Найти сумму элементов этой последовательности. Получить новую последовательность путем замены всех ненулевых элементов исходной последовательности на разность между элементом последовательности и найденной суммой.
program zadacha_5;
uses crt;
var
a: array [1..5] of integer;
s: integer;
i: integer;
begin
clrscr;
s:=0;
for i:=1 to 5 do
begin
write ('a[',i,']=');
readln (a[i]);
s:=s+a[i];
end;
i:=i+1;
writeln ('s=',s);
readln;
for i:=1 to 5 do
begin
if a[i] <> 0 then
begin
a[i]:=a[i]-s;
write ('a[',i,']=',a[i],' ');
end
else write ('a[',i,']=',a[i],' ');
end;
i:=i+1;
readln;
end.
Программа 6
Сформировать массив следующим образом а1 = –1, а2 = 1, а3 = –2, а4 = 2, а5 = –3, а6 = 3, а7 = -4 и т.д.
program zadacha_6;
var a: array [1..100] of integer;
i,j,k,n: integer;
begin
writeln('Введите количество элементов массива');
readln(n);
for i:=1 to n do
begin
if (i mod 2)=0 then
begin
j:= j+1;
a[i]:=i-j;
writeln ('a[',i,']=',a[i]);
end;
if (i mod 2)<>0 then
begin
k:=k+3;
a[i]:=i-k+1;
writeln ('a[',i,']=',a[i]);
end;
end;
readln;
end.
Программа 7
В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.
program zadacha_7;
uses crt;
var
a:array[1..50] of integer;
b:array[1..50] of integer;
i,j,n:integer; {переменные-счетчики, кол-во чисел}
begin
clrscr;
writeln('введите кол-во чисел ');
readln(n);
for i:=1 to n do
begin
write('a[',i,'] = '); {ввод элементов массива}
readln(a[i]);
end;
j:=0;
for i:=1 to n do begin
if a[i]=0 then begin {условие: если элемент массива равен нулю}
j:=j+1; {то: увеличиваем переменную-счетчик}
а[i]:=i; {и: присваиваем элементу нового массива номер позиции }
writeln('массив, сост. из номеров позиций нулевых элементов b[',j,']=',a[i]);
readln;
end;
end;
end.
Программа 8
Переписать элементы целочисленного, кратные 5, массива А в массив В, если такие элементы отсутствуют, то выдать сообщение.
program zadacha_8;
uses crt;
var
a:array[1..50] of integer;
b:array[1..50] of integer;
i,j,n:integer; {переменные-счетчики, кол-во чисел}
begin
clrscr;
writeln('введите кол-во чисел ');
readln(n);
for i:=1 to n do
begin
write('a[',i,'] = '); {ввод элементов массива}
readln(a[i]);
end;
j:=0;
for i:=1 to n do
begin
if a[i] DIV 5*5=a[i] then
begin
j:=j+1
b[j]:=a[i];
end;
end ;
if j=0 then writeln(‘Элементов кратных 5 нет’ ) else
for i:=1 to j do
begin
writeln( b[',i,']=',b[i]);
readln;
end;
end.
Программа 9
Дан массив x: array[1..n] of integer. Не используя других массивов, переставить элементы массива в обратном порядке.
program zadacha_28;
uses crt;
const
n=50;
var
x: array[1..n] of integer;{массив}
m: integer; {кол-во элементов в массиве}
i,j: integer; {счётчик}
k: integer; {доп. число}
begin
clrscr;
randomize;
write ('Введите кол-во элементов в массиве ');
readln(m);
for i:=1 to m do
begin
x[i]:= random(100)-73;
writeln ('x[',i,']= ',x[i]);
end;
writeln ('Новый массив ');
for i:=1 to (m div 2) do
begin
k:= x[i];
x[i]:= x[m+1-i];
x[m+1-i]:= k;
end;
for i:=1 to m do
begin
writeln ('x[',i,']= ',x[i]);
end;
readln;
end.
Программа 10
Используя массив, составить программу, которая напечатает на экране 20 чисел Фибоначчи. Последовательность Фибоначчи определяется равенствами
а[1] = а[2] = 1; а[k] = а[k-1] + а[k-2] при к > 2.
Использование массива позволяет создать эффективную программу. Для вывода каждого члена последовательности отведем на экране 5 позиций.
program fibon;
const n=20;
var а: array[1..n] of integer;
k: integer;
begin
а[1]:=1;а[2]:=1;
for k:=3 to n dо а[k]:=а[k-1]+а[k-2];
for k:=1 to n dо write(а[k]:5);
writeln
end.
Программа 11
Проверить есть ли в заданном массиве простые числа.
program zadacha_11;
uses crt;
var
a: array [1..1000] of integer;{массив}
n: integer; {кол-во элементов в массиве}
i: integer; {счётчик 1-го цикла}
y: integer; {счётчик 2-го цикла}
j: integer; {кол-во делителей}
m: integer; {кол-во простых чисел в массиве}
begin
clrscr;
write ('Введите кол-во элементов в массиве');
read(n);
for i:=1 to n do
begin
write ('a[',i,']=');
readln (a[i]);
end;
for i:=1 to n do
begin
j:=0;
for y:=1 to a[i] do
begin
if (a[i] mod y)=0 then
begin
j:=j+1;
end;
end;
if j=2 then
begin
m:=m+1;
end;
end;
write(' Кол-во простых чисел равно ', m);
readln;
end.
Программа 12
Дана последовательность А1, А2, ..., А10. Получить наибольшее среди А1+А10, А2+А9, ..., А5+А6.
program zadacha_12;
uses crt;
const
n=10;
var
A: array [1..100] of integer; {первая последовательность}
B: array [1..100] of integer; {вторая последовательность}
i,j: integer; {счётчики цикла}
S: integer; {сумма элементов}
max: integer; {максимальная сумма}
begin
clrscr;
for i:= 1 to n do
begin
write ('a(',i,')=');
readln (a[i]);
end;
for i:= 1 to 5 do
for j:= 5 to n do
begin
if i+j=11 then
begin
s:= a[i] + a[j];
b[i]:=s;
writeln ('b[',i,']=',b[i]);
readln;
end;
end;
max:= b[1];
for i:= 1 to 5 do
begin
if b[i]>max then
begin
max:= b[i];
end;
end;
writeln ('максимальная сумма равна',max);
readln;
end.