ТОП 10:

Формирование нового массива из значений элементов матрицы



8-1 Дана матрица, состоящая из 10 строк и 5 столбцов и заполненная случайными числами в диапазоне от 0 до 29. Сформировать одномерный массив SUM из сумм значений элементов каждого столбца матрицы.

8-2 Написать программу, которая формирует двумерный массив 2 (матрицу B), являющийся «зеркальным отражением» по горизонтали (относительно вертикальной границы) исходного массива 1 (матрица А).

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

Дано:

Массив 1 Массив 2

11 30 0 25 25 0 30 11

12 8 3 1 1 3 8 12

42 64 8 37 37 8 64 42

7 15 24 22 22 24 15 7

Решение:

Program otr;

USES CRT;

VAR A,B: ARRAY [1..100,1..100] OF INTEGER;

N,I,j:WORD;

BEGIN

CLRSCR; {Очистка экрана}

{----- Ввод размерности массива -----}

REPEAT {цикл с постусловием}

{Повтор ввода размерности N,}

{до тех пор, пока она не войдёт}

{в диапазон 1-100}

WRITE(’Введите размерность массива (1-100): ’);

READLN(N);

UNTIL (N>=2) AND (N<=100) {условие выхода из цикла}

{----- Заполнение исходного массива А -----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

A[i,j]:=(RANDOM(99));

{----- Вывод исходного массива А-----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

BEGIN

WRITE(A[i,j]:3);

IF j=N THEN WRITELN

END;

WRITELN;

{----- Формирование массива B -----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

B[i,N-j+1]:=A[i,j];

{----- Вывод массива B -----}

FOR i:=1 TO N DO

FOR j:=1 TO N DO

BEGIN

WRITE(B[i,j]:3);

IF j=N THEN WRITELN

END;

END.

Комментарии. В описательной части объявлены два одинаковых массива A и B максимальной размерностью 10000 элементов (100×100).

В программе используется:

1 цикл с пост условием для ввода размерности массива.

Оператор REPEAT нужен, чтобы значение рабочей размерности массивов не вышло за пределы, определённые в описании (до тех пор, пока не будет введено число от 2 до 100, будет происходить запрос на его ввод).

2 цикл (в цикле) «Заполнение исходного массива А».

В блоке «Заполнение исходного массива А» происходит присвоение элементам исходного массива случайных значений в диапазоне от 0 до 99. Эту задачу выполняет стандартная функция RANDOM.

3 цикл (в цикле) «Вывод исходного массива А».

Блок «Вывод исходного массива А» выводит сформированный массив A на экран. Вывод производится построчно. Как только выведен последний элемент очередной строки, процедура WRITELN переводит курсор на новую строку экрана.

4 цикл (в цикле) «Формирование массива B»

Основную работу выполняет блок «Формирование массива B». Каждый элемент исходного массива A записывается в массив B так, чтобы его положение в массиве B было зеркальным по отношению к A. Вычисление необходимого номера столбца массива B происходит по формуле N-j+1, где N – количество столбцов, j – номер текущего столбца массива A.

5 цикл (в цикле) – вывод на экран сформированного массива B.

 


 

Варианты заданий

1.

a). Вычислить

b). Вычислить среднее арифметическое значений элементов массива.

2.

a). Вычислить

b). Сосчитать количество элементов матрицы, значения которых не превышают заданное число.

3.

a). Вычислить

b). Найти минимальное число в матрице.

4.

a). Вычислить

b). Вычислить сумму отрицательных элементов массива.

5.

a). Вычислить

b). Найти максимальное число в матрице.

6.

a). Вычислить

b). Сосчитать количество неотрицательных элементов массива.

7.

a). Вычислить

b). Сосчитать количество отрицательных элементов массива.

8.

a). Вычислить

b). Переставить два заданных элемента матрицы.

9.

a). Вычислить

b). Вычислить произведение элементов массива.

10.

a). Вычислить

b). Сосчитать количество отрицательных элементов матрицы.

11.

a). Вычислить

b). Вычислить произведение отрицательных элементов матрицы.

12.

a). Вычислить

b). Сосчитать количество элементов массива, значения которых превышают заданное число.

13.

a). Вычислить

b). Вычислить сумму положительных элементов матрицы.

14.

a). Вычислить

b). Заменить отрицательные элементы массива нулями.

15.

a). Вычислить

b). Вычислить сумму элементов каждой строки матрицы.

16.

a). Вычислить

b). Переставить две заданных строки матрицы.

17.

a). Вычислить .

b). Вычислить сумму элементов каждого столбца матрицы.

18.

a). Вычислить .

b). Переставить два заданных столбца матрицы.

19.

a). Вычислить .

b). Сформировать массив B содержащий максимальные элементы строк матрицы A.

20.

a). Вычислить .

b). Сформировать массив B содержащий суммы элементов строк матрицы A.

 

3.8. Содержание отчета (см. файл «Оформление_отчета_Pas»).

 

3.9. Контрольные вопросы

1. Каково назначение оператора цикла FOR?

2. Каковы правила записи оператора цикла FOR?

3. Каковы алгоритмы работы оператора цикла FOR?

4. Какие циклы называются вложенными?

5. Какие ограничения наложены на оператор FOR?

6. Для чего нужны рекуррентные формулы при обработке данных с использованием цикла? Как выглядит (в общем виде) рекуррентная формула для подсчета суммы с использованием цикла с известным числом повторений? Как выглядит (в общем виде) рекуррентная формула для подсчета произведения с использованием цикла с известным числом повторений?

7. Как определяются данные типа "массив"? Запишите примеры определения данных типа массив с использованием разделов type и var (или только var)?

8. Как получить доступ к элементам одно-, двумерного массивов?

9. Как можно организовать ввод (вывод) элементов одно-, двумерного массивов?







Последнее изменение этой страницы: 2017-01-26; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.235.75.196 (0.007 с.)