- Вывести элементы главной диагонали
- Решение
- Найти минимальный элемент из элементов квадратной матрицы N x N, располагающихся ниже главной диагонали
- Главная и побочная диагональ матрицы паскаль
- Задача
- Решение
- Двумерный массив в Pascal
- Описание, ввод и вывод элементов двумерного массива
- Главная и побочная диагональ при работе с двумерными матрицами в Pascal
Вывести элементы главной диагонали
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Вывести на печать элементы главной диагонали и диагонали, расположенной под главной
Помогите мне сделать программу. Нужно ранспонировать матрицу и вывести на печать элементы главной.
Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали
Умножьте все элементы матрицы на максимум главной диагонали. Вывести максимум главной диагонали.
все нулевые элементы размещены ниже главной диагонали на нечетных строках и выше главной диагонали — на четных
все нулевые элементы размещены ниже главной диагонали на нечетных строках и выше главной диагонали.
Вывести элементы главной диагонали матрицы
1.Двумерный массив случайными числами из интервала 2.Нужно вывести элементы главной диагонали в.
Решение
maksoralbekov, здравствуйте! Есть более простой вариант вывода элементов главной диагонали (см. комментарии к программе):
Вывести положительные элементы главной диагонали матрицы
Дан массив размера N×N. Необходимо вывести положительные элементы главной диагонали. Формат.
В заданной матрице вывести элементы главной диагонали
В заданной матрице А вывести элементы главной диагонали.Затем вывести элементы побочной диагонали
Вывести положительные элементы главной диагонали матрицы
Дан массив размера N ×N. Необходимо вывести положительные элементы главной диагонали. Формат.
Вывести все элементы массива, лежащие ниже главной диагонали
Задан двумерный массив, состоящий из n строк и n столбцов. Вывести все элементы, лежащие ниже.
Источник
Найти минимальный элемент из элементов квадратной матрицы N x N, располагающихся ниже главной диагонали
Еще раз привет, форумчане! Снова прошу помощи в данной задаче. Никак не получается. Язык программирования Си. Программа Visual Studio 2013. Буду благодарен любой помощи от вас. Заранее благодарю.
Цель: изучить приемы обработки двумерных массивов, алгоритмизации и программирования задач с матрицами, приемы отладки и тестирования программ со структурами данных в виде двумерных массивов.
Исходные данные: матрица А размерами MxN.
Примечание:
главная диагональ квадратной матрицы – от a0, 0 до an-1, n-1 ,
правая диагональ матрицы – от a0, n-1 до an-1, 0
1. Найти минимальный элемент из элементов квадратной матрицы N x N, располагающихся ниже главной диагонали.
Как можно реализовать в коде данную задачу?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Из элементов лежащих выше главной диагонали найти максимальный элемент, а ниже главной-отрицательный минимальный элемент
Дан массив A(m,n). Из элементов лежащих выше главной диагонали найти максимальный элемент, а ниже.
Найти минимальный элемент на главной диагонали квадратной матрицы
Найти минимальный элемент на главной диагонали квадратной матрицы. Добавлено через 53 минуты.
Найти минимальный элемент на главной диагонали квадратной матрицы
Найти минимальный элемент на главной диагонали квадратной матрицы
Найти минимальный элемент матрицы, расположенный ниже главной диагонали
Задана матрица размером NxN. Найти минимальный элемент, среди элементов, расположенных ниже главной.
А чтоб некоторые шибко умные трансляторы не выражали свое недоумение, перед этим кодом написать min = 0; Или min = 1000; Что ничего не меняет, но успокаивает ихние материнское чуйства.
Добавлено через 2 минуты
Единственный, как мне кажется, недостаток моего кода (как, кстати, и вашего), при N=1 (или меньше) он дает вполне дурной результат
Байт, тут не соглашусь, если бы я хотел, чтобы программа работала «как надо», то она была бы как минимум в 2 раза короче и как минимум в три раза непонятнее, мне же нужно, чтобы человек понял принцип работы, а заодно по возможности приложил собственную голову, например к тому, чтобы улучшить предложенный код. А когда он получает вылизанный и сверкающий вариант, то. он просто забирает этот вариант в карман и уходит все так же ничего не понимающий.
Поэтому на мой взгляд не стоит запутывать код совмещенными условиями, хотя они и короче и приятнее смотрятся. С тем же успехом, я бы мог «подправить» код palva:
stake-k26, Возможно, вы и правы. Но я исходил из того, что начиная писать код, надо представить, как бы ты сам решил задачу руками, «на бумажке». А уже потом ее кодировать. Ведь ни один разумный человек не будет перебирать всю матрицу, а ограничится только нужной областью. Иначе получается такое «тупенькое» отношение к циклу — всегда от нуля, всегда — до N, всегда — ++. И вот это отношение потом приходится корректировать, а оно уже въелось в кровь и плоть.
Но вполне возможно, что это понимание следует отложить до следующей «ступени познания».
Как всегда, есть разные точки зрения, и каждой есть свое обоснование.
Добавлено через 1 минуту
ну как бы по заданию мы работает с массивами, а при N Добавлено через 32 минуты
Кстати, Байт, я поэкспериментировал с твоей поправкой, минимум находит корректно, однако программа теряет универсальность, т.е. в своем коде, просто меняя знаки в условиях, я могу находить как минимум, так и максимум, или не только в части массива, которая ниже главной диагонали, но и в части массива, которая выше, однако твоя поправка работает только на минимум и только в нижней части, т.е. для доработки программы под новые условия придется полностью заменить условие. Так, что идея, конечно, отличная, но, увы, не универсальная.
Добавлено через 2 часа 3 минуты
На мой взгляд, когда человек сталкивается с массивами, он должен уяснить следующее:
Во-первых, любая программа работы с массивом состоит из четырех этапов:
Этап 1 — объявляем массив (или запрашиваем у компьютера память для хранения массива);
Этап 2 — заполняем массив значениями;
Этап 3 — обрабатываем значения в массиве;
Этап 4 — выводим результат на экран (и освобождаем память, если это необходимо).
Во-вторых, для этапов 2 и 3 (а иногда и 4) вовсе не обязательно городить несколько циклов, вполне можно обойтись и одним (пример выше).
И в-третьих, чаще всего можно обойтись и вовсе без массивов:
Или как например здесь.
И если учебный алгоритм не будет достаточно гибким и универсальным, то постижение всех этих вещей может занять уйму времени.
Хотя возможно я не прав, и есть более эффективные методы обучения.
Источник
Главная и побочная диагональ матрицы паскаль
Задача
Задана матрица A (n, n) действительных чисел. «Перевернуть» в ней главную и побочную диагонали (переписать цифры в обратном порядке).
Решение
Чтобы у матрицы были диагонали, она должна быть квадратной, т.е. n = m.
Элементы главной диагонали имеют индекс [i,i]. Побочной [i,n-i+1].
Для того, чтобы «перевернуть» диагонали, не надо перебирать всю матрицу. Достаточно перебрать половину
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Двумерный массив в Pascal
Матрица или двумерный массив – это прямоугольная таблица чисел (или других элементов одного типа). Каждый элемент матрицы имеет два индекса (номер строки и номер столбца).
Исходные данные для решения многих задач можно представить в табличной форме:
Таблица результатов производственной деятельности нескольких филиалов фирмы может быть представлена так:
zavod1: array [1..4] of integer; zavod2: array [1..4] of integer; zavod3: array [1..4] of integer;
Или в виде двумерного массива так:
var A: array[1..3,1..4] of integer;
Описание, ввод и вывод элементов двумерного массива
Варианты описания двумерного массива
- Описание массива в разделе переменных:
const N = 3; M = 4; var A: array[1..N,1..M] of integer;
const M=10; N=5; type matrix=array [1..M, 1..N] of integer; var A: matrix;
for i:=1 to N do for j:=1 to M do begin write(‘A[‘,i,’,’,j,’]=’); read ( A[i,j] ); end;
Следующий фрагмент программы выводит на экран значения элементов массива по строкам:
for i:=1 to N do begin for j:=1 to M do write ( A[i,j]:5 ); writeln; end;
Рассмотрим следующую задачу: Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:
Номер станции | 1-й день | 2-й день | 3-й день | 4-й день |
---|---|---|---|---|
1 | -8 | -14 | -19 | -18 |
2 | 25 | 28 | 26 | 20 |
3 | 11 | 18 | 20 | 25 |
Т.е. запись показаний в двумерном массиве выглядела бы так:
t[1,1]:=-8; | t[1,2]:=-14; | t[1,3]:=-19; | t[1,4]:=-18; |
t[2,1]:=25; | t[2,2]:=28; | t[2,3]:=26; | t[2,4]:=20; |
t[3,1]:=11; | t[3,2]:=18; | t[3,3]:=20; | t[3,4]:=25; |
Объявление двумерного массива:
var t: array [1..3, 1..4] of integer;
- Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
- Распечатать показания термометров всех метеостанций за 2-й день.
- Определить среднюю температуру на 3-й метеостанции.
- Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.
Самостоятельно подумайте, как находится сумма элементов массива pascal.
const m = 5; n = 4; var a: array[1..m,1..n] of byte; s: array[1..n] of byte; i,j, sum: byte; begin randomize; for i := 1 to m do begin for j := 1 to n do begin . . end; writeln end; writeln (‘————‘); . . . . . write (‘ | sum = ‘, sum); readln end.
Главная и побочная диагональ при работе с двумерными матрицами в Pascal
Главная диагональ квадратной матрицы n x n (т.е. той, у которой количество строк равно количеству столбцов) проходит с верхнего левого угла матрицы (элемент 1,1) до правого нижнего угла матрицы (элемент n,n).
Побочная диагональ квадратной матрицы n x n проходит с нижнего левого угла матрицы (элемент n,1) до правого верхнего угла матрицы (элемент 1,n).
Формулу поиска элементов диагоналей проще всего искать, нарисовав элементы матрицы:
1,1 | 1,2 | 1,3 | 1,4 |
2,1 | 2,2 | 2,3 | 2,4 |
3,1 | 3,2 | 3,3 | 3,4 |
4,1 | 4,2 | 4,3 | 4,4 |
Учитывая, что первая цифра в программе будет соответствовать счетчику i, а вторая — счетчику j, то из таблицы можно вывести формулы:
Главная диагональ матрицы в Паскаль имеет формулу:
i=j
Побочная диагональ матрицы в Паскаль имеет формулу:
n=i+j-1 (или j=n-i+1 )
где n — размерность квадратной матрицы
Решение:
var i,j,n:integer; a: array[1..100,1..100]of integer; begin randomize; writeln (‘введите размерность матрицы:’); readln(n); for i:=1 to n do begin for j:=1 to n do begin a[i,j]:=random(10); write(a[i,j]:3); end; writeln; end; writeln; for i:=1 to n do begin for j:=1 to n do begin if (i=j) or (n=i+j-1) then a[i,j]:=0; write(a[i,j]:3) end; writeln; end; end.
var A:array[1..5,1..5] of integer; i,j:integer; sum,sum1,sum2:integer; begin randomize; for i:=1 to 5 do for j:=1 to 5 do A[i,j]:=random(10); write (‘Исходный массив A: ‘); for i:=1 to 5 do begin writeln; for j:=1 to 5 do write (A[i,j]:2,’ ‘); end; sum1:=0; for i:=1 to 5 do for j:=1 to 5 do if (i-j=1) then sum1:=sum1+A[i,j]; sum2:=0; for i:=1 to 5 do for j:=1 to 5 do if (j-i=1) then sum2:=sum2+A[i,j]; sum:=sum1+sum2; writeln; writeln(‘Сумма = ‘,sum); end.
Рассмотрим еще один пример работы с двумерным массивом.
var index1,index2,i,j,N,M:integer; s,min,f:real; a:array[1..300,1..300] of real; begin N:=10; M:=5; for i:=1 to N do begin for j:=1 to M do begin a[i,j]:=random(20); s:=s+a[i,j]; write(a[i,j]:3); end; writeln; end; f:=s/(N*M); writeln(‘srednee znachenie ‘,f); min:=abs(a[1,1]-f); for i:=1 to N do begin for j:=1 to M do begin if abs(a[i,j]-f) Поделитесь уроком с коллегами и друзьями:
Двумерные массивы (матрицы)
Двумерным массивом называется совокупность данных , каждое значение которых зависит от его местоположения в строке и в столбце.
Каждый элемент матрицы описывается, как
где:
A(i,j) – значение элемента матрицы
А – имя матрицы
i – номер строки
j – номер столбца
Если в матрице количество строк равно количеству столбцов, то такая матрица называется квадратной, в противном случае прямоугольной.
Прямоугольная матрица
A(l,l) | A(l,2) | A(l,3) | A(l,4) |
A(2,l) | A(2,2) | A(2,3) | A(2,4) |
A(3,l) | A(3,2) | A(3,3) | A(3,4) |
Квадратная матрица
A(l,l) | A(l,2) | A(l,3) |
A(2,l) | A(2,2) | A(2,3) |
A(3,l) | A(3,2) | A(3,3) |
Соотношение индексов в квадратной матрице
i=j | элементы матрицы находятся на главной диагонали |
---|---|
i | элементы матрицы находятся над главной диагональю |
i>j | элементы матрицы находятся под главной диагональю |
i+j=n+1 | элементы матрицы находятся на побочной диагонали |
i+j | элементы матрицы находятся над побочной диагональю |
i+j>n+1 | элементы матрицы находятся под побочной диагональю |
Описание элементов двумерного массива (матрицы)
1 способ:
где:
– идентификатор массива
array – массив
– количество строк в матрице – количество столбцов в матрице
of – для
– описание типа переменных в массиве (real, integer и т. д.)
Пример:
Массив А состоит из 4 столбцов и 3 строк, значение каждого элемента матрицы представляет собой вещественное число.
а : array [1..3,1..4] of real;
Массив В и С состоят из 3 строк и 3 столбцов, значение каждого элемента матрицы представляет собой целое число.
b, с : array [1..3,1..3] of integer;
2 способ:
Пример:
Массив А состоит из 4 столбцов и 3 строк, значение каждого элемента матрицы представляет собой вещественное число.
а : array [1..3] of array [1..4] of real;
Массив В и С состоят из 3 строк и 3 столбцов, значение каждого элемента матрицы представляет собой целое число.
b,c : array [1..3] of array [1..3] of integer;
Ввод – вывод значений элементов матрицы
Заполнение элементов матрицы с клавиатуры
program zadacha (input, output); (ввод с клавиатуры, вывод в столбик>
var
a: array[1..10,1..10] of real;
j, i: integer;
begin
for i:=1 to 10 do
for j:=1 to 10 do
begin
readln (a[i, j]);
writeln ( ‘a(‘, i, ‘,’, j, ‘)=’, a[i,j])
end
end.
Заполнение элементов матрицы по формуле
program zadacha (input, output) ;
var
a: array[1..10,1..10] of real;
i,j: integer;
begin
for i:=1 to 10 do
begin
for j:=1 to 10 do
begin
a[i,j]: = (i + 0.5)/(j + sin(j));
write ( a[i,j], ‘ ‘)
end;
writeln
end
end.
Заполнение элементов матрицы случайными числами
program zadacha (input,output);
var
a: array[1..10,1..10] of integer;
i,j: integer;
begin
randomize;
for i:=1 to 10 do
for j:=1 to 10 do
begin
a[i,j]:=random(30);
write ( ‘а(‘, i, ‘,’, j, ‘)=’, a[i,j])
end
end.
Типовые задачи на матрицы
Нахождение экстремумов
Дана прямоугольная матрица A(10,15), заполненная случайными числами в диапазоне от 0 до 29 включительно. Выдать на печать максимальное значение элементов данной матрицы.
program zadacha (input, output);
var
a: array[1..10,1..15] of integer;
i,j,max: integer;
begin
randomize;
for i:=1 to 10 do
for j:=1 to 15 do a[i,j]:=random(30);
max:=a [1,1];
for i:=1 to 10 do
for j:=1 to 15 do
if a[i,j]>max then max:=a[i,j]; writeln ( ‘максимальное значение=’,тах)
end.
Суммирование значений элементов матрицы
Дана матрица A(l,15), заполненная датчиком случайных чисел. Найти сумму значений всех элементов данной матрицы.
program zadacha (input, output) ;
var
a: array[1..10,1..l5] of integer;
i,j,s: integer;
begin
s:=0;
randomize;
for i:=1 to 10 do
for j:=1 to 15 do
begin
a [i,j]:=random(30);
s:=s + a[i,j]
end;
writeln ( ‘сумма значений=’,s)
end.
Нахождения количества значений элементов матрицы
Дана матрица A(10,20), заполненная датчиком случайных чисел в диапазоне от -10 до 19 включительно. Подсчитать количество положительных значений элементов каждой строки матрицы.
program zadacha (input, output) ;
var
a: array[1..10,1..20] of integer;
i,j,k: integer;
begin
for i:=1 to 10 do
begin
k:=0;
for j:=1 to 20 do
begin
a[i,j]:=random (30)-10;
if a[i,j]>0 then k:=k+1
end;
writeln ( ‘кол-во полож. знач. в ‘, i, ‘ строке=’,k)
end;
end.
Формирование нового одномерного массива из значений элементов матрицы
Дана матрица, состоящая из 10 строк и 5 столбцов и заполненная случайными числами в диапазоне от 0 до 29. Сформировать одномерный массив SUM из сумм значений элементов каждого столбца матрицы.
program zadacha (input, output);
var
a: array[1..10,1..5] of integer;
sum: array[1..5] of integer;
i,j,s: integer;
begin
for i:=1 to 10 do
for j:=1 to 5 do
begin
a [i,j] :=random (30) ;
writeln (‘эл-нт мас-ва=’,a[i,j])
end;
for j:=1 to 5 do
begin
s:=0;
for i:=1 to 10 do s:=s + a[i,j];
sum[j]:=s
end;
for i:=1 to 5 do writeln ( ‘sum(‘, i,’)=’,sum(i))
end.
Источник