
- •Переменные
- •Типы переменных и констант
- •Целые типы данных языка Turbo Pascal
- •Стандартные математические функции, используемые
- •Арифметические выражения
- •Операторы
- •Оператор присваивания
- •Ввод и вывод результатов вычислений
- •Общая структура программы на Turbo Pascal
- •Пример выполнения задания 1
- •Тема 2 Логические выражения Условный оператор
- •Условный оператор
- •Пример выполнения задания 2
- •Тема 3 Использование циклических структур. Операторы цикла с предусловием и с постусловием
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Пример выполнения задания 3
- •Тема 4 Использование циклических структур. Оператор цикла с параметром
- •Пример выполнения задания 4
- •Тема 5 Использование и обработка одномерного массива
- •Описание одномерного массива
- •Часто встречающиеся задачи на одномерный массив
- •Пример выполнения задания 5
- •Тема 6 Использование и обработка двумерного массива
- •Задачи с использованием главной или побочной диагонали матрицы
- •Пример выполнения задания 6
- •Тема 7 Организация программ с использованием функций
- •Пример выполнения задания 7
- •Тема 8 Организация программ с использованием процедур
- •Параметры
- •Пример выполнения задания 8
- •Тема 9 Текстовые файлы
- •Символьный тип данных
- •Операции над строками
- •Особенности работы со строками
- •Редактирование строк
- •Сору (s:string; start, len:integer):string;
- •Преобразование строк
- •Процедуры и функции для работы с текстовыми файлами
- •Примеры выполнения задания 9
- •Тема 10
- •Работа с комбинированными типами данных
- •(Записями)
- •Общие сведения
- •Особенности работы с записями
- •Пример выполнения задания 10
- •Тема 11 Типизированные файлы
- •Процедуры и функции для работы с типизированными файлами
- •Прямой доступ к элементам файла
- •Примеры выполнения задания 11
Задачи с использованием главной или побочной диагонали матрицы
Существует множество задач, в которых необходимо использовать элементы главной или побочной диагонали матрицы (эти понятия имеют смысл только для квадратных матриц!).
Пусть дана матрица а(4,4).
a11, a22, a33, a44 – элементы главной диагонали матрицы. На главной диагонали индексы строки и столбца равны, то есть i = j. Элемент главной диагонали можно обозначать как a[i,i].
У элементов матрицы, лежащих выше главной диагонали, i < j, а у тех, которые ниже, i > j.
a14, a23, a32, a41 – элементы побочной диагонали матрицы. На побочной диагонали сумма индексов строки и столбца постоянна и на единицу больше размера матрицы, т. е. для матрицы a(4, 4) сумма индексов i + j = 5, поэтому элемент побочной диагонали можно обозначать как a[i,5 – i].
У элементов a[i, j], лежащих выше побочной диагонали сумма индексов i + j < 5, а у элементов a[i, j], лежащих ниже побочной диагонали, сумма индексов i + j > 5.
Задача 1. Найти сумму элементов, расположенных на главной диагонали матрицы a.
sum:=0; for i:=1 to 4 do for j:=1 to 4 do if i=j then sum:=sum + a[i, j]; |
Другой вариант: sum:=0; for i:=1 to 4 do sum:=sum + a[i, i]; |
Задача 2. Найти сумму элементов матрицы а, расположенных выше ее главной диагонали.
sum = 0;
for i:=1 to 4 do
for j:=1 to 4 do
if i < j then sum:=sum + a[i, j];
Задача 3. Найти сумму элементов побочной диагонали матрицы a.
sum:=0; for i:=1 to 4 do for j:=1 to 4 do if i+=5j then sum:=sum + a[i, j]; |
Другой вариант: sum:=0; for i:=1 to 4 do sum:=sum + a[i, 5-i]; |
sum = 0;
for i : = 1 to 4 do
sum : = sum + a[i, 5 – i];
Задача 4. Найти сумму элементов матрицы a, лежащих выше ее побочной диагонали.
sum = 0;
for i:=1 to 4 do
for j:=1 to 4 do
if i+j<5 then sum:=sum + a[i, j];
Пример выполнения задания 6
Дана матрица a(4, 4). Получить матрицу b(4, 4) по правилу:
а также произведение элементов строки, содержащей наименьший элемент матрицы.
program lab4;
uses crt;
var к, i, j : integer;
b, a : array [1 .. 4, 1 .. 4] of real;
p, min : real;
begin clrscr;
writeln (введите матрицу d);
for i:=1 to 4 do
for j:=1 to 4 do read (a[i, j]);
min:=a[l, 1]; k:=1;
{формирование матрицы b и в этом же цикле}
{поиск минимального элемента и номера строки,
в которой он находится}
for i:=1 to 4 do
for j:=1 to 4 do
begin
if a[i, j] > 0 then b[i, j]:=2*a[i, j] else
b[i, j]:=0;
if a[i, j] < min then
begin min:=a[i, j];
к:=i
end
end;
p:=1;
for j:=1 to 4 do
p:=p*a[k, j]; {вычисление произведения элементов
k-ой строки}
writeln (вывод b(4, 4));
for i:=1 to 4 do
begin
for j:=1 to 4 do write(b[i, j]:8:2);
writeln
end;
writeln (минимальный элемент = , min :8:2);
writeln (произведение элементов , k, строки =, p:5:2)
readkey
end.