Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка по информатике.doc
Скачиваний:
70
Добавлен:
29.05.2015
Размер:
1.14 Mб
Скачать

Алгоритм сортировки массива:

1. Сравним между собой первый и второй элементы массива и переставим их (если это необходимо) в порядке возрастания. Затем то же самое проделаем со вторым и третьим элементами и т.д. до конца массива. В результате этих сравнений и перестановок наименьшее число окажется первым.

2. Второй этап сравнений и перестановок будет проходить для (N−1) элементов (N − количество элементов массива), начиная со второго до N. В этом случае второй элемент окажется наименьшим. Уменьшая каждый раз количество элементов на 1, операции сравнения и перестановок закончим тогда, когда останется один элемент массива.

Переменная M является в качестве подсобной для перестановки элементов.

Задача 7. В массиве Х(8) подсчитайте сумму элементов, стоящих на чётных местах.

Обозначения:

S − сумма элементов, стоящих на чётных местах;

i − переменная цикла с предусловием.

Program Massiv7;

Var

i,s: integer;

X: array[1..8] of integer;

begin

for i:=1 to 8 do

readln (X[i]);

{Присвоение начальных значений сумме и переменной}

S:=0;

i:=2;

{Организация цикла с предусловием}

While i<=8 do begin

{Вычисление суммы и переход на следующее чётное место}

S:=S+X[i];

i:=i+2;

end;

{Вывод результатов вычисления на экран}

writeln ('S=',S);

readln;

end.

Задание 7. Обработка двумерных массивов

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

Например, D(3×4) – двумерный массив, состоящий из 3 строк и 4 столбцов.

Общий вид записи:

где Dij – элементы массива;

i – индекс строки;

j – индекс столбца.

Запись элементов двумерного массива на языке Паскаль D[i,j].

Общий вид записи описания двумерного массива:

Var «Имя массива»: array[n1..n2, m1..m2] of «Тип элементов»;

n1 − номер первой строки;

n2 − номер последней строки;

m1 – номер первого столбца;

m2 – номер последнего столбца.

array, ofзарезервированные слова («массив», «из»).

Задача 1. Найдите максимальный элемент в каждой строке матрицы A(4×3).

Обозначения:

MAX – максимальный элемент матрицы.

Program Matriza1;

Var

i, j, MAX: integer;

А:array[1..4,1..3] of integer;

begin

{Организация ввода матрицы с клавиатуры построчно}

for i:=1 to 4 do

for j:=1 to 3 do

readln (A[i, j]);

{Организация цикла для поиска максимального элемента в каждой строке}

for i:=1 to 4 do begin

{Присвоение начального значения максимальному элементу текущей строки}

MAX:=a[i,1];

for j:=2 to 3 do

if a[i,j]>MAX then MAX:=a[i,j];

{Вывод результатов вычисления на экран}

writeln ('Макс.элемент в', i, 'строке=', MAX);

end;

readln;

end.

Задача 2. В матрице D(3×3) найдите произведение элементов каждого столбца.

Обозначения:

P – произведение элементов каждого столбца.

Program Matriza2;

Var

{Описание переменных матрицы}

i, j, p: integer;

{Описание матрицы D}

D: array[1..3,1..3] of integer;

Begin

{Организация ввода матрицы с клавиатуры построчно}

for i: =1 to 3 do

for j : = 1 to 3 do

readln (D[i, j]);

{Организация цикла для вычисления произведения элементов каждого столбца}

for j:=1 to 3 do begin

{Присвоение начального значения произведению}

P:=1;

for i:=1 to 3 do p:=p*D[i,j];

{Вывод результатов вычисления на экран}

writeln ('P=',P);

end;

readln;

end.

Задача 3. В матрице С(5×5) элементы, лежащие выше главной диагонали, уменьшите на сумму элементов главной диагонали.

Обозначения:

Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j).

S – сумма элементов главной диагонали.

Для ввода данных используется функция Random (50) – датчик случайных чисел в диапазоне [0;49].

Program Matriza3;

Var

i, j, s: integer;

C: array[1..5,1..5] of integer;

begin

{Запуск генератора случайных чисел}

Randomize;

Writeln ('Данная матрица');

For i:=1 to 5 do begin

For j:=1 to 5 do begin

C[i, j]:=Random(50);

Write (' ',C[i, j]:4);

End;

Writeln;

End;

{Присвоение начального значения сумме}

S:=0;

{Вычисление суммы элементов главной диагонали матрицы}

For i:=1 to 5 do

S:=S+C[i, i];

Writeln ('S=',S);

Writeln ('Новая матрица');

{Организация цикла для уменьшения элементов матрицы, лежащих выше главной диагонали на сумму}

For i:=1 to 5 do begin

For j:=1 to 5 do begin

If i<j then C[i, j]:= C[i, j]-S;

{Вывод новой матрицы на экран}

Write (' ',C[i, j]:4); end;

Writeln;

End; Readln;

End.

Задача 4. В матрице В(3×3) все элементы, лежащие на главной диагонали, замените на 0.

Данные задаются типизированной константой, значения элементов массива выбираются произвольно

Элементы, лежащие на главной диагонали, имеют одинаковые индексы (i=j).

Program Matriza4;

Var

i, j: integer;

{Описание матрицы В с помощью типизированной константы}

const B: array[1..3,1..3] of integer=

((1,-3,2),

(5,-4,-2),

(-1,5,8));

begin

{Организация цикла для замены элементов главной диагонали матрицы на 0}

for i:=1 to 3 do

for j:=1 to 3 do

if i=j then B[i, j]:=0

{Вывод новой матрицы на экран}

for i:=1 to 3 do begin

for j:=1 to 3 do

write (B[i, j]:5);

writeln;

end;

readln;

end.

Задача 5.В матрице А(4×4) определите в каждом столбце количество отрицательных элементов.

Обозначения:

k – количество отрицательных элементов.

Program Matriza5;

Var

i, j, k: integer;

A: array[1..4,1..4] of integer;

begin

for i : = 1 to 4 do

for j : = 1 to 4 do

readln (А[i, j]);

{Организация цикла для подсчёта количества отрицательных элементов в каждом столбце}

for j:=1 to 4 do begin

{Присвоение начального значения количеству элементов}

k:=0;

for i:=1 to 4 do

if A[i,j]<0 then k:=k+1;

{Вывод результатов вычисления на экран}

writeln ('В столбце №',j,

'кол-во отриц.элементов- ',k);

end;

readln;

end.

Задача 6.Выполните транспонирование матрицы Х(3×3) (замените строки столбцами).

Обозначения:

Yij – элементы полученной матрицы после транспонирования.

Program Matriza6;

Var

i, j: integer;

Y: array[1..3,1..3] of integer;

X: array[1..3,1..3] of integer;

begin

{Организация ввода матрицы X с клавиатуры}

for i:=1 to 3 do

for j:=1 to 3 do

readln (X[i, j]);

{Организация цикла для замены строк столбцами матрицы}

for i:=1 to 3 do

for j:=1 to 3 do

Y[j,i]:=X[i,j];

{Вывод новой матрицы Y на экран}

for i:=1 to 3 do begin

for j:=1 to 3 do

write (Y[i,j]:5);

writeln;

end;

readln;

end.

Задача 7. Определите произведение элементов четных столбцов матрицы В(3×4).

Обозначения:

Р – произведение элементов.

Program Matriza7;

Var

Р, i, j: integer;

B: array[1..3,1..4] of integer;

begin

for i : = 1 to 3 do

for j : = 1 to 4 do

readln (B[i, j]);

j:=2;

{Организация цикла с предусловием}

while j<=4 do begin

{Присвоение начального значения произведению}

P:=1;

{Вычисление произведения}

for i:=1 to 3 do

Р:=Р*В[i,j];

{Вывод результатов вычисления на экран}

writeln ('Р=',Р);

{Переход на следующий чётный столбец}

j:=j+2;

end;

readln;

end.

Задача 8. В каждой строке матрицы А(3×3) определите сумму положительных элементов.

Обозначения:

S – сумма положительных элементов.

Program Matriza8;

Var

s, i, j: integer;

A: array[1..3,1..3] of integer;

begin

for i : = 1 to 3 do

for j : = 1 to 3 do

readln (А[i, j]);

{Организация цикла для вычисления суммы положительных элементов матрицы в каждой строке}

for i:=1 to 3 do begin

{Присвоение начального значения сумме}

S:=0;

for j:=1 to 3 do

if A[i,j]>0 then S:=S+A[i,j];

{Вывод результатов вычисления на экран}

writeln ('Сумма ',i,' строки=',S);

end;

readln;

end.