Методическое пособие для учащихся 9-11 классов средних общеобразовательных школ программирование на языке pascal
Вид материала | Методическое пособие |
СодержаниеОбработка таблиц. (двумерных массивов) |
- Методическое пособие и контрольные задания для учащихся общеобразовательных школ учебно-тренировочные, 1398.7kb.
- Учебно-методическое пособие для учителей общеобразовательных школ Издательство, 2357.68kb.
- Областная юниорская олимпиада по физике среди учащихся 7-8 классов, 24.46kb.
- Учебное пособие для учащихся 10 (11) классов «Экология Москвы и устойчивое развитие», 879.38kb.
- Конкурс проводится с целью стимулирования интереса школьников к изучению истории родного, 50.93kb.
- Методическое пособие для проведения занятий по правилам пожарной безопасности с учащимися, 235.71kb.
- Методическое пособие для учителей, психологов, воспитателей общеобразовательных учреждений, 2321.32kb.
- Учебное пособие для преподавателей общеобразовательных школ, 98.81kb.
- Программирование на языке высокого уровня, 59.92kb.
- Программа учебного курса «экология москвы и устойчивое развитие» для 10 классов средних, 707.86kb.
ОБРАБОТКА ТАБЛИЦ. (ДВУМЕРНЫХ МАССИВОВ)
Цель работы: приобрести навыки в решении задач с использованием двумерного массива.
Краткие теоретические сведения
Двумерный массив (или прямоугольная таблица) В из n строк и т столбцов в общем виде выглядит следующим образом:
b11 b12 … b1m
b21 b22 … b2m
. .. . .. ... . ..
bn1 bn2 … bnm
На Паскале имена элементов массива записываются так же, с двумя номерами (индексами): b (1,1), b (1, 2), .... b (1, т), b (2, 1), b (2, 2), ..., b (2, т), .... b (n, т). В памяти компьютера элементы двумерного массива расположены один за другим: после элементов первой строки следуют элементы второй строки и т. д. Если число строк таблицы равно числу столбцов, то такая таблица называется квадратной. Главная диагональ квадратной таблицы проходит из левого верхнего угла в правый нижний. Рассмотрим примеры.
1. Вычисление суммы элементов главной диагонали квадратной таблицы.
Для решения задачи надо выполнить следующие шаги:
1) ввести таблицу в память; 2) найти сумму элементов главной диагонали; 3) напечатать результат. Описание таблицы, как и описание одномерного массива, используется для резервирования памяти. В описании указываются диапазоны для двух номеров: строк и столбцов.
const n = 3;
var b: array [ 1..n, 1..n ] of real; i, j: integer;
При обработке массивов в разделе переменных программы появляются имена индексов элементов: для одномерного массива — одной, для двумерного — двух целочисленных переменных.
При вычислении суммы элементов диагонали следует обратить внимание на имена суммируемых элементов: оба индекса имеют одинаковые значение, т. е. в общем виде имя элемента диагонали — b[ i, i ]. Это означает, что можно рассматривать диагональ, как одномерный массив, и использовать один цикл для вычислений.
program Р16;
const n =3;
var b: array [ 1 .. n, 1 .. n ] of real; i, j: integer; S: real;
begin
writeln (‘введите значения элементов таблицы по строкам’);
writeln (‘в конце каждой строки нажимайте
for i: = 1 to n do
begin
for j: = 1 to n do
read (b[i,j]);
writeln
end;
S: = 0;
for i: = 1 to n do
S: = S+ b [i, i ];
write (‘ сумма элементов диагонали таблицы S = ‘ , S)
end.
2. Нахождение наибольших элементов каждой строки таблицы.
Каждую строку таблицы можно рассматривать, как одномерный массив, и использовать идею нахождения наибольшего значения в программе Р13. Найденные значения будем помещать в одномерный массив. В программе Р17 для каждой строки таблицы переменная а [ i ] играет такую же роль, как переменная mах в программе Р13. Для каждой строки (ее задает переменная i) элемент a [ i ] получает значение первого элемента строки. Затем внутренний цикл по переменной j позволяет просмотреть все элементы данной строки и, если среди них встретится элемент, значение которого больше, чем запомненное в а [ i ], то оно присваивается a [ i ]. Для распечатки результатов работы программы — массива а — используется цикл. Имеющийся в программе комментарий, заключенный в фигурные скобки, позволяет при чтении программы выделить основную ее часть.
Пример Р17 — нахождение наибольших элементов строк:
Массив результатов | Данная таблица | |||
А [1] | 6 | 5 | 6 | 1 |
а [2] | 15 | 4 | 12 | 15 |
а [3] | 2 | 2 | -3 | 0 |
program Р17;
const n = 3;
var b: array [ 1 .. n, 1 .. n ] of integer; i, j: integer; a: array [1 .. n ] of integer;
begin
writeln (‘введите значения элементов таблицы по строкам’);
writeln (‘в конце каждой строки нажимайте
for i: = 1 to n do
begin
for j: = 1 to n do
read (b [ i, j ]);
writeln end;
{построение массива наибольших значений элементов строк таблицы}
for i: = 1 to n do
begin
a[i]:= b[i,1 ];
for j: = 2 to n do
if a[i]
then a [i]: = b[i,j];
end;
writeln (‘наибольшие числа строк таблицы:’);
for i: = 1 to n do
writeln (a [ i ])
end.
3. Нахождение сумм элементов столбцов таблицы.
При обработке таблиц можно осуществлять операции как над строками, так и над столбцами. Для нахождения сумм элементов столбцов можно использовать алгоритм примера Р12. Чтобы лучше понимать работу программы, введем переменную S для вычисления суммы, а затем для каждого столбца запишем полученный результат в массив a, т. е. присвоим его переменной а [j ], где j — текущий номер столбцов таблицы. Пример Р18 — суммирование по столбцам:
Данная таблица | ||
5 | 6 | 1 |
4 | 12 | 15 |
2 | -3 | 0 |
Массив результатов | ||
а [1] | а [2] | а [3] |
11 | 15 | 16 |
program Р18;
const n = 3;
var b: array [ 1 .. n, 1 .. n ] of integer; S, i, j: integer;
a: array [1 .. n ] of integer;
begin
writeln (‘вводите значения элементов таблицы по строкам’);
writeln (‘в конце каждой строки нажимайте
for i: = 1 to n do
begin
for j: = 1 to n do
read (b [ i, j ]);
writeln;
end;
{построение массива сумм элементов столбцов таблицы}
for j: = 1 to n do
begin
S: = 0;
for i: = 1 to n do
S: = S+ b [i,j];
a [j ]: = s
end;
writeln (‘суммы элементов столбцов таблицы:’);
for i: = 1 to n do
write (a [ i ])
end.
4. Перестановка строк таблицы.
В прямоугольной таблице В из n строк и m столбцов требуется поменять местами две строки. При решении этой задачи можно воспользоваться алгоритмом обмена значениями двух переменных из программы сортировки (пример Р14). Для этого достаточно организовать цикл по переменной столбца и, используя промежуточную переменную, менять местами каждую пару элементов, стоящих в одном столбце. При заданных номерах строк К и L решение выглядит так:
program Р19;
const n = 3; m = 4;
var b: array [ 1 .. n, 1 .. m ] of real; c: real; i, j, K, L: integer;
begin
write (‘введите номера меняемых местами строк таблицы’);
readln (К, L);
{ввод таблицы}
for i: = 1 to n do
begin
writeln (i, ‘-я строка таблицы’);
for j: = 1 to m do
read (b [ i, j ]);
end;
{перестановка строк}
for j: = 1 to m do
begin
c:= b[K,j];
b [ K, j ]: = b [ L, j ];
b [ L, j ]: = с end;
{печать результатов}
writeln;
writeln (‘таблица с переставленными строками:’)
for i: = 1 to n do
begin
for j: = 1 to m do
write (b [ i, j ]);
writeln
end
end.
Методические указания по работе и задания
№ | Условие задачи |
1 | Найдите произведения элементов строк прямоугольной таблицы. |
2 | Найдите наибольший элемент квадратной таблицы. |
3 | Замените все отрицательные числа их модулями. |
4 | Найдите наим. элемент квадратной таблицы и замените его нулем. |
5 | В квадратной таблице, не содержащей отр. элементов, найдите корень квадратный из произведения диагональных элементов. |
6 | В целочисленной прямоугольной таблице увеличьте на 0,5 все отрицательные элементы. |
7 | В целочисленной прямоугольной таблице расставить строки таким образом, чтобы элементы в первом столбце были упорядочены по убыванию. |
8 | В квадратной таблице найдите наибольший элемент диагонали. |
9 | В заданном массиве замените нулем наибольший элемент |
10 | Поменяйте местами 1-ую и последнюю строки прям-ой таблицы. |
11 | Составить программу подсчета числа различных элементов двумерного массива. |
12 | В прямоугольной таблице замените все элементы их квадратами |
13 | Квадратичную матрицу, состоящую из натуральных чисел повернуть на 90 градусов по часовой стрелке и вывести результат на экран. |
14 | Написать программу, которая вычисляет сумму диагональных элементов квадратичной матрицы. |
15 | Написать программу, которая проверяет, является ли введенная матрица магическим квадратом (сумма элементов которой в каждой строке, в каждом столбе и по каждой диагонали одинакова). |
Лабораторная работа №7