Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lab6

.doc
Скачиваний:
5
Добавлен:
20.12.2018
Размер:
316.93 Кб
Скачать

readln(num);

s:=0;

for i:=1 to n do

if a[i,num]>0 then s:=s+a[i,num];

writeln;

writeln('Сумма элементов в ',i,' столбце = ',s);

writeln

END.

Пример 6.23. Заменить все элементы Двумерного массива А целых чисел, которые меньше среднего арифметического первого столбца, квадратами этих элементов.

Листинг 6.23.

const n=5;

var a: array [1..n,1..n] of integer;

i,j,s: integer;

sr: real;

BEGIN

randomize;

for i:=1 to n do

begin

for j:=1 to n do

begin

a[i,j]:=random(20);

write(a[i,j]:4);

end;

writeln

end;

s:=0;

for i:=1 to n do

s:=s+a[i,1];

sr:=s/n;

for i:=1 to n do

for j:=1 to n do

if a[i,j]<sr then a[i,j]:=sqr(a[i,j]);

writeln;

for i:=1 to n do

begin

for j:=1 to n do

write(a[i,j]:4);

writeln

end;

writeln

END.

Пример 6.24. Дана матрица А5,5, состоящая из латинских букв. Отсортировать каждую строку в алфавитном порядке [6].

Листинг 6.24.

const n=5;

var a: array [1..n,1..n] of char;

i,j,k: integer;

buf: char;

BEGIN

writeln('Введите ',n*n,' букв:');

for i:=1 to n do

for j:=1 to n do

read(a[i,j]);

for i:=1 to n do

begin

for k:=1 to n-1 do

for j:= k to n do

if a[i,k]>a[i,j] then

begin

buf:=a[i,k];

a[i,k]:=a[i,j];

a[i,j]:=buf

end;

end;

writeln;

for i:=1 to n do

begin

for j:=1 to n do

write(a[i,j]:4);

writeln

end;

writeln

END.

Пример 6.25. Дана матрица А5,5, состоящая из целых чисел. Вывести значения элементов на печать, выполнив обход матрицы по «спирали»:

Листинг 6.25.

const n=5;

var a: array [1..n,1..n] of integer;

i,j,k: integer;

BEGIN

writeln ('ИСХОДНАЯ МАТРИЦА:');

k:=1;

for i:=1 to n do

begin

for j:=1 to n do

begin

a[i,j]:=k;

write(a[i,j]:4);

inc(k)

end;

writeln

end;

writeln;

for k:=1 to (n+1) div 2 do

begin

for j:=k to n-k+1 do

write(a[k,j]:4);

for i:=k+1 to n-k+1 do

write(a[i,n-k+1]:4);

for j:=n-k downto k do

write(a[n-k+1,j]:4);

for i:=n-k downto k+1 do

write(a[i,k]:4);

end;

writeln

END.

Пример 6.26. Даны вещественные числа а1, …, аn и вещественная квадратная матрица порядка n ≥ 6. Получить вещественную матрицу размера n × (n + 1), вставив в исходную матрицу между пятым и шестым столбцами новый столбец с элементами а1, …, аn [13].

Листинг 6.26.

const n=10;

a: array [1..n] of real = (1,2,3,4,5,6,7,8,9,10);

var x: array [1..n,1..n+1] of real;

i: 1..n;

j: 1..n+1;

BEGIN

for i:=1 to n do

begin

for j:=1 to n do

begin

x[i,j]:=i/j;

write(x[i,j]:6:2)

end;

writeln

end;

writeln;

for i:=1 to n do

begin

for j:=n downto 6 do

x[i,j+1]:=x[i,j];

x[i,6]:=a[i]

end;

for i:=1 to n do

begin

for j:=1 to n+1 do

write(x[i,j]:6:2);

writeln

end;

END.

Пример 6.27. Дано вещественное число x. Получить вещественную квадратную матрицу А из 10 строк и 10 столбцов, формируя элементы матрицы Аij по приведенной схеме (середина матрицы заполняется нулями) [32]:

Листинг 6.27.

const n=10;

var a: array [1..n,1..n] of real;

i,j: integer;

x: real;

BEGIN

for i:=2 to n-1 do

for j:=2 to n-1 do

a[i,j]:=0;

write('Введите значение x -> ');

readln(x);

a[1,1]:=1;

a[n,n]:=1;

for i:=2 to n do

begin

a[i,1]:=a[i-1,1]*x;

a[1,i]:=a[i,1];

a[11-i,10]:=a[i,1];

a[10,11-i]:=a[i,1]

end;

writeln('Полученная матрица:');

for i:=1 to n do

begin

for j:=1 to n do

write(a[i,j]:6:2);

writeln

end;

END.

Пример 6.28. Дана целочисленная квадратная матрица А размером 8 × 8. Получить целочисленную одномерную последовательность В1, В2, …, В64, элементами которой являются числа, полученные из квадратной матрицы по схеме: В1 = А11, В2 = А21, …, В64 = А18 [32].

Листинг 6.28.

const n=8;

var a: array [1..n,1..n] of integer;

b: array [1..n*n] of integer;

i,j,k: integer;

BEGIN

randomize;

for i:=1 to n do

begin

for j:=1 to n do

begin

a[i,j]:=random(20)-3;

write(a[i,j]:4)

end;

writeln

end;

k:=0;

for j:=1 to n do

if j div 2 = j/2 then

for i:= n downto 1 do

begin

inc(k);

b[k]:=a[i,j]

end;

else

for i:=1 to n do

begin

inc(k);

b[k]:=a[i,j]

end;

writeln('Полученный одномерный массив');

for i:=1 to n*n do

write(b[i]:4);

END.

Пример 6.29. Элемент матрицы называется седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Дана матрица целых чисел размером N × M (N и M заданы). Выяснить, имеются ли седловые точки в этой матрице и, если имеются, указать индекс одной из них [32].

Листинг 6.29.

const n=10; m=10;

var a: array [1..n,1..m] of integer;

i,j,l,k: integer;

min,max,c,p: real;

BEGIN

randomize;

for i:=1 to n do

begin

for j:=1 to m do

begin

a[i,j]:=random(30)-3;

write(a[i,j]:3)

end;

writeln

end;

for i:=1 to n do

begin

min:=a[i,1];

for j:=1 to m do

if a[i,j] <= min then

begin

min:=a[i,j];

k:=j

end;

max:=a[1,k];

for l:=1 to n do

if a[l,k]>=max then max:=a[l,k];

if max=min then

begin

writeln('Строка — ',i,' Столбец — ',k);

break;

goto 1

end

end;

writeln('Таких точек не существует!');

1: END.

Пример 6.30. Образовать два одномерных массива путем перезаписи в них элементов из заданного целочисленного Двумерного массива размером N × N, при этом в один из формируемых массивов переписать все элементы, стоящие выше главной диагонали, а другой — ниже главной диагонали, в порядке.

Решение задачи заключается в нахождении алгоритма считывания элементов по указанным на рисунке направлениям. Весь процесс «прохождения» матрицы реализован в 3-х циклах.

Листинг 6.30.

label 1,2;

const n=10;

var a: array [1..n,1..n] of integer;

b,c: array [1..28] of integer;

i,j,d,l,w: integer;

k: real;

BEGIN

randomize;

for i:=1 to n do

begin

for j:=1 to n do

begin

a[i,j]:=random(20)-3;

write(a[i,j]:3)

end;

writeln

end;

k:=(n*n-n)/2; w:=1; i:=1;

1: for j:=w to n-2*w+1 do

begin

b[i]:=a[j,j+w];

c[i]:=a[j+w,j];

if i=k then

begin

break;

goto 2

end;

inc(i)

end;

for d:=n-2*w downto w do

begin

b[i]:=a[d,n-w+1];

c[i]:=a[n-w+1,d];

if i=k then

begin

break;

goto 2

end;

inc(i)

end;

for l:=n-w downto 2*w+1 do

begin

b[i]:=a[w,l];

c[i]:=a[l,w];

if i=k then

begin

break;

goto 2

end;

inc(i)

end;

inc(w);

goto 1;

2: writeln('Массив В:');

for i:=1 to trunc(k) do

write(b[i]:4);

writeln;

writeln('Массив C:');

for i:=1 to trunc(k) do

write(c[i]:4)

END.

Пример 6.31. На квадратном клетчатом листе бумаги размером 100 × 100 клеток нарисовано несколько прямоугольников. Каждый прямоугольник состоит из целых клеток, различные прямоугольники не накладываются друг на друга и не соприкасаются. Надо сосчитать число нарисованных прямоугольников.

Для решения используем массив размером 100 на 100, в котором А[ij] = 1, если клетка [ij] принадлежит какому-либо прямоугольнику, и А[ij] = 0 — в противном случае.

Листинг 6.31.

label 1,2,3;

const n=100;

var a: array [1..n,1..n] of integer;

i,j,s,x,y: integer;

BEGIN

randomize;

for i:=1 to n do

for j:=1 to n do

a[i,j]:=random(2);

s:=0;

for i:=1 to n do

for j:=1 to n do

begin

if a[i,j]=0 then goto 1;

for x:=j to n do

begin

if a[i,x] = 0 then goto 3;

a[i,x]:=0;

for y:=i to n do

begin

if a[y,j]=0 then goto 2;

a[y,i]:=0

end;

2: end;

3: inc(s);

1: end;

writeln('S = ',s);

END.

____________________________________________

Задания

903. Найти сумму всех четных элементов Двумерного массива целых чисел A[10, 10].

904. Найти наибольший и наименьший элементы Двумерного массива вещественных чисел В[mn].

905. N точек на плоскости заданы своими координатами, которые хранятся соответственно в массивах х и у. Найти пару самых удаленных друг от друга точек.

906. Найти сумму элементов Двумерного массива вещественных чисел C[15, 15], расположенных на главной диагонали.

907. Найти суммы элементов Двумерного массива целых чисел, расположенных на линиях, параллельных главной диагонали, и ниже нее.

908. Найти суммы элементов Двумерного массива вещественных чисел, расположенных на линиях, параллельных главной диагонали, и выше нее.

909. Найти номер строки и столбца Двумерного массива для максимального элемента этого массива.

910. В Двумерном массиве целых чисел содержатся несколько пар значений переменных х и у. Найти пару значений, дающих наибольшее значение выражения z = x2 – 3x.

911. Задан Двумерный массив вещественных чисел. Найти:

а) максимальную сумму абсолютных значений элементов по строкам и номер строки с такой суммой;

б) максимальную сумму абсолютных значений элементов по столбцам и номер столбца с такой суммой.

912. Имеется Двумерный массив целых чисел. Найти номер строки, для которой среднеарифметическое значение ее элементов максимально.

913. В Двумерном массиве вещественных чисел найти номер строки, для которой среднеарифметическое значение ее элементов минимально.

914. Найти номер столбца Двумерного массива целых чисел, для которого среднеарифметическое значение его элементов максимально.

915. Найти номер столбца Двумерного массива вещественных чисел, для которого среднеарифметическое значение его элементов минимально.

916. В Двумерном массиве целых чисел поменять местами элементы, симметричные относительно главной диагонали.

917. В Двумерном массиве вещественных чисел поменять местами строки и столбцы с одинаковыми номерами.

918. В Двумерном массиве целых чисел поменять местами столбцы, симметричные относительно середины массива (вертикальной линии).

919. В Двумерном массиве целых чисел поменять местами строки, симметричные относительно середины массива (горизонтальной линии).

920. Поменять местами значения элементов Двумерного массива вещественных чисел, симметричных относительно побочной диагонали.

921. Найти максимальный элемент среди максимальных элементов строк Двумерного массива целых чисел. Определить номер строки и столбца для такого элемента.

922. Найти минимальный элемент среди максимальных элементов строк Двумерного массива вещественных чисел. Определить номер строки и столбца для такого элемента.

923. Найти минимальный среди минимальных элементов столбцов Двумерного массива целых чисел. Определить номер строки и столбца для такого элемента.

924. Найти максимальный элемент среди минимальных элементов столбцов Двумерного массива. Определить номер строки и столбца для такого элемента.

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

926. Найти все неповторяющиеся элементы Двумерного массива целых чисел.

927. Имеется одномерный массив. Создать из элементов этого массива Двумерный массив, в котором элементы расположены в том же порядке.

928. Заполнить Двумерный массив целыми числами от 1 до 100 по спирали.

929. Имеется Двумерный массив целых чисел. Создать из него два одномерных массива, в одном из которых расположены положительные и нулевые элементы, а в другом — отрицательные элементы.

930. В Двумерном массиве вещественных чисел заменить все элементы, меньшие суммы элементов первой строки, этой суммой.

931. Отсортировать строки массива целых чисел по убыванию.

932. Отсортировать четные строки массива по возрастанию, а нечетные по убыванию.

933. Отсортировать нечетные столбцы массива по возрастанию.

934. Написать программу, которая в Двумерном массиве А[nm] целых чисел, таком что для всех i от 1 до n и всех j от 1 до m – 1 выполняется условие A[ij] > A[ij + 1], а для всех i от 1 до n – 1 выполняется условие А[im] > А[i + 1, m], находит все элементы А[ij], равные j + i или устанавливает, что таких элементов нет.

935. Задан массив чисел А[nm], упорядоченный по возрастанию по строкам и столбцам, то есть:

  • А[i, 1] < А[i, 2] < … < А[im] (при всех i);

  • А[1, j] < А[2, j] < … < А[nj] (при всех j).

Найти элемент массива, равный заданному числу Х, и вывести его индексы (ij). Напечатать слово «НЕТ», если такого элемента не окажется. Х можно сравнить не более чем с m + n элементами массива.

936. Вывести на экран (в одну строку) все элементы главной диагонали массива:

а) начиная с элемента, расположенного в левом верхнем углу;

б) начиная с элемента, расположенного в правом нижнем углу.

937. Вывести на экран (в одну строку) все элементы побочной диагонали массива:

а) начиная с элемента, расположенного в правом верхнем углу;

б) начиная с элемента, расположенного в левом нижнем углу.

938. Известен номер строки, на которой расположен элемент главной диагонали массива. Вывести на экран значение этого элемента.

939. Известен номер столбца, на котором расположен элемент побочной диагонали массива. Вывести на экран значение этого элемента.

940. Составить программу расчета:

а) суммы двух любых элементов главной диагонали массива;

б) произведения двух любых элементов побочной диагонали массива.

941. Заменить значения всех элементов главной диагонали массива нулевыми.

942. Заменить значения всех элементов побочной диагонали массива значениями, равными 100.

943. Определить:

а) сумму элементов главной диагонали массива;

б) сумму элементов побочной диагонали массива.

в) среднее арифметическое элементов главной диагонали массива;

г) среднее арифметическое элементов побочной диагонали массива.

д) минимальный элемент главной диагонали массива;

е) максимальный элемент побочной диагонали массива.

ж) максимальный элемент главной диагонали массива;

з) минимальный элемент побочной диагонали массива.

944. Составить программу, которая меняет местами два любых элемента:

а) главной диагонали массива;

б) побочной диагонали массива.

945. В массиве записаны целые числа. Верно ли, что сумма элементов побочной диагонали массива оканчивается цифрой 0?

946. В массиве записаны целые числа. Вычислить:

а) сумму элементов главной диагонали массива, больших 20;

б) сумму элементов побочной диагонали массива, кратных четырем;

в) количество элементов побочной диагонали массива, равных пяти;

г) число четных элементов главной диагонали массива.

д) произведение элементов побочной диагонали массива, меньших 10;

е) сумму элементов главной диагонали массива, оканчивающихся цифрой 7;

ж) количество нулевых элементов главной диагонали массива;

з) число нечетных элементов побочной диагонали массива.

947. Определить:

а) координаты первого максимального элемента главной диагонали массива;

б) координаты первого минимального элемента побочной диагонали массива.

в) координаты последнего минимального элемента главной диагонали массива;

г) координаты последнего максимального элемента побочной диагонали массива.

Во всех задачах просматривать диагональ сверху вниз.

948. В Двумерном массиве из n строк и n столбцов, где n — нечетное число, все элементы различны. Наибольший элемент среди стоящих на главной и побочной диагоналях поменять местами с элементом, стоящим на пересечении этих диагоналей.

949. Дан Двумерный массив. Вывести на экран:

а) все элементы пятой строки массива;

б) все элементы третьей строки массива, начиная с последнего элемента этой строки;

в) все элементы s-го столбца массива;

г) все элементы k-го столбца массива, начиная с нижнего элемента этого столбца.

д) все элементы второго столбца массива;

е) все элементы пятой строки массива, начиная с последнего элемента этой строки;

ж) все элементы m-й строки массива;

з) все элементы n-й строки массива, начиная с первого элемента этой строки.

950. В квадратном массиве выделить четыре четверти, ограниченные главной и побочной диагоналями (без учета элементов, расположенных на диагоналях): верхнюю, нижнюю, левую и правую. Поменять местами элементы:

а) верхней и нижней четвертей;

б) правой и левой четвертей.

951. Дан Двумерный массив.

а) Заменить значения всех элементов второй строки массива числом 5.

б) Заменить значения всех элементов пятого столбца массива числом 10.

952. Составить программу, которая проводит замену всех элементов:

а) некоторой строки Двумерного массива заданным числом;

б) некоторого столбца Двумерного массива заданным числом.

953. Составить программу, которая изменяет значения всех элементов:

а) некоторой строки Двумерного массива числами заданной последовательности;

б) некоторого столбца Двумерного массива числами заданной последовательности.

В обеих задачах числа последовательности должны вводиться с клавиатуры и в дополнительный одномерный массив не записываться.

954. К элементам k-й строки Двумерного массива прибавить элементы р-й строки.

955. Дан Двумерный массив. Составить программу расчета:

а) суммы двух любых элементов третьего столбца массива;

б) произведения двух любых элементов второй строки массива.

956. Дан Двумерный массив. Определить сумму всех элементов:

а) третьей строки массива;

б) s-го столбца массива.

в) второго столбца массива;

г) k-й строки массива.

957. К элементам s-го столбца Двумерного массива прибавить элементы q-го столбца.

958. Заменить все элементы k-й строки и s-го столбца Двумерного массива противоположными по знаку (элемент, стоящий на пересечении строки и столбца, не изменять).

959. В Двумерном массиве хранится информация о количестве учеников в каждом классе каждого потока школы с первого по одиннадцатый (в первой строке — информация о первых классах, во второй — о вторых классах и т. д.). В каждом потоке школы имеются четыре класса. Определить общее число учеников 5-х классов.

960. В Двумерном массиве хранится информация о баллах, полученных спортсменами-пятиборцами в каждом из пяти видов спорта (в первой строке — информация о баллах первого спортсмена, во второй — второго и т. д.). Общее число спортсменов равно 20. Определить общую сумму баллов, набранных третьим спортсменом.

961. В поезде 18 вагонов, в каждом из которых 36 мест. Информация о проданных на поезд билетах хранится в Двумерном массиве, номера строк которого соответствует номерам вагонов, а номера столбцов — номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае — 0. Составить программу, определяющую число свободных мест в любом из вагонов поезда.

962. В зрительном зале 25 рядов, в каждом из которых 36 мест (кресел). Информация о проданных билетах хранится в Двумерном массиве, номера строк которого соответствуют номерам рядов, а номера столбцов — номерам мест. Если билет на то или иное место продан, то соответствующий элемент массива имеет значение 1, в противном случае — 0. Составить программу, определяющую число проданных билетов на места в 12-м ряду.

963. В Двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первой строке — информация о группах первого курса, во второй — второго и т. д.). На каждом курсе имеется 8 групп. Составить программу для расчета общего числа студентов на любом курсе.

964. В Двумерном массиве хранится информация о зарплате 20 человек за каждый месяц года (первого человека — в первой строке, второго — во второй и т. д.). Составить программу для расчета общей зарплаты, полученной за год любым человеком, информация о зарплате которого представлена в массиве.

965. В Двумерном массиве хранится информация о зарплате 18 человек за каждый месяц года (за январь — в первом столбце, за февраль — во втором и т. д.). Определить общую зарплату, выплаченную в июне.

966. Дан Двумерный массив. Определить:

а) сумму квадратов элементов четвертого столбца массива;

б) сумму квадратов элементов k-й строки массива;

в) произведение элементов третьей строки;

г) сумму квадратов элементов второй строки массива;

д) сумму квадратов элементов s-го столбца массива;

е) среднее арифметическое элементов второго столбца массива;

ж) среднее арифметическое элементов k-й строки массива;

з) среднее арифметическое элементов n-го столбца массива;

и) среднее арифметическое элементов первой строки массива.

967. Фирма имеет 10 магазинов. Информация о доходе каждого магазина за каждый месяц года хранится в Двумерном массиве (первого магазина — в первой строке, второго — во второй и т. д.). Составить программу для расчета среднемесячного дохода любого магазина.

968. В Двумерном массиве хранится информация об оценках каждого из 20 учеников класса по тому или иному предмету (в первой строке — информация об оценках первого ученика, во второй — второго). Общее число предметов равно 10. Определить среднюю оценку пятого ученика.

969. В Двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первом столбце — информация о группах первого курса, во втором — второго и т. д.). На каждом курсе имеется 8 групп. Определить среднее число студентов в одной группе на третьем курсе.

970. В Двумерном массиве хранится информация о зарплате 18 человек за каждый месяц года (в первом столбце — зарплата за январь, во втором — за февраль и т. д.). Составить программу для расчета средней зарплаты за любой месяц.

971. Сформировать квадратную матрицу порядка n × n по заданному образцу (n — четное):

а) ;

б) ;

в) ;

г) ;

д) ;

е) ;

ж) ;

з) .

972. Сформировать квадратную матрицу порядка n по заданному образцу:

а) ;

б) ;

в) ;

г) .

973. Построить квадратную матрицу порядка 2n:

974. Дано вещественное число x. Получить квадратную матрицу порядка n + 1:

975. Даны вещественные числа a1a2an. Получить квадратную матрицу порядка n:

976. Получить матрицу:

а) ;

б) .

977. Составить программу, которая заполняет квадратную матрицу порядка n натуральными числами 1, 2, 3, ..., n2, записывая их в нее «по спирали». Например, для n = 5 получаем следующую матрицу:

978. Дана вещественная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n × n крест-накрест.

979. Дана вещественная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n × n по часовой стрелке, начиная с блока в левом верхнем углу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]