#include <iostream>
using namespace std;
int main() {
int n, m;
int a[500][500], min = a[0][0];
cin >> n;
//Ввод массива
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
min = a[0][0];
//Поиск минимума
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[j][j] > min) {
min = a[j][j];
}
}
}
cout << min;
return 0;
}
ТарасПрогер
2,2691 золотой знак5 серебряных знаков26 бронзовых знаков
задан 5 апр 2022 в 15:47
Вы собираетесь ввести четверть миллиона чисел с клавиатуры? Или генерируйте эти числа, или берите поскромнее размер массива. Не нужно использовать лишние объекты и не нужен никакой вложенный цикл для проверки элементов только главной диагонали. Все очень просто:
const int n = 5;
int a[n][n];
//Ввод массива
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
//Поиск минимума
int min = a[0][0];
for (int j = 1; j < n; j++)
if (a[j][j] < min)
min = a[j][j];
cout << min;
ответ дан 5 апр 2022 в 19:42
AR HovsepyanAR Hovsepyan
15.8k3 золотых знака13 серебряных знаков30 бронзовых знаков
Добавьте условие проверки на нахождение на главной диагонали и объявляйте минимальный элемент после ввода массива
#include <iostream>
using namespace std;
int main() {
int n, m;
int a[500][500], min = a[0][0];
cin >> n;
//Ввод массива
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
min = a[0][0];
//Поиск минимума
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[j][j] < min && i == j) {
min = a[j][j];
}
}
}
cout << min;
return 0;
}
vanesicks
4683 серебряных знака15 бронзовых знаков
ответ дан 5 апр 2022 в 16:10
CameLCameL
1,0943 серебряных знака15 бронзовых знаков
6
#include <numeric>
#include <iostream>
using namespace std;
int main()
{
constexpr size_t size = 4; // этапа компиляции
int arr[size][size];
for (size_t i = 0; i < size; i++)
{
for (size_t j = 0; j < size; j++)
{
cin >> arr[i][j];
}
}
int min = numeric_limits<int>::max(); // макс. значение int'а
size_t j = 0;
for (size_t i = 0; i < size; i++)
{
if (arr[i][j] <= min)
min = arr[i][j];
j++; // сдвиг по row
}
cout << min << endl;
}
ответ дан 5 апр 2022 в 16:11
ТарасПрогерТарасПрогер
2,2691 золотой знак5 серебряных знаков26 бронзовых знаков
1
1 / 1 / 0 Регистрация: 13.05.2009 Сообщений: 44 |
|
1 |
|
Найти элементы главной диагонали матрицы06.06.2009, 11:39. Показов 3047. Ответов 11
Найти элементы главной диагонали матрицы 5 на 5
0 |
FunDuck 692 / 383 / 51 Регистрация: 22.01.2009 Сообщений: 1,135 |
||||
06.06.2009, 11:43 |
2 |
|||
0 |
92 / 88 / 58 Регистрация: 14.05.2009 Сообщений: 202 |
|
06.06.2009, 13:13 |
3 |
for(i=0;i<5;i++)
0 |
Search.. |
06.06.2009, 13:14
|
Не по теме: System.exe: Та через Теорему Фундука пойдет… 😀
0 |
Monte-Cristo |
06.06.2009, 13:58
|
Не по теме: Search.., Главное что работает!) а все остальное пофик 😀
0 |
Search.. |
06.06.2009, 14:28
|
Не по теме: Monte-Cristo: =)
0 |
92 / 88 / 58 Регистрация: 14.05.2009 Сообщений: 202 |
|
06.06.2009, 21:12 |
7 |
Я вообще только нужную часть кода написал. Так что прежде чем умничать внимательно вдумайся и разберись. Можешь проверить , работает все как надо.
0 |
2815 / 1406 / 107 Регистрация: 07.03.2009 Сообщений: 4,446 |
|
06.06.2009, 21:20 |
8 |
Я вообще только нужную часть кода написал. Так что прежде чем умничать внимательно вдумайся и разберись. Можешь проверить , работает все как надо. во-первых, не понятно кому адрессовано сообщение…
for(i=0;i<5;i++) после кода:
for (int i = 0; i < 5; i++) не целесообразно… так как код FunDuck будет работать значительно быстрее.
0 |
92 / 88 / 58 Регистрация: 14.05.2009 Сообщений: 202 |
|
06.06.2009, 21:39 |
9 |
Ведь в условии массив двумерный и нужно использовать две переменные чтобы обходить элементы? К примеру если бы в условии не элементы главной диагонали,т.е. i не было бы равно j.
0 |
Заказ софта 343 / 188 / 21 Регистрация: 26.05.2009 Сообщений: 863 |
|
06.06.2009, 21:53 |
10 |
System.exe: Фундук – это величина в программировании. Так что не стоит катить бочку на его код. Фундук лучший, и пора бы тебе с этим смериться ! Не по теме: Я в шоцi ыыыы
0 |
92 / 88 / 58 Регистрация: 14.05.2009 Сообщений: 202 |
|
06.06.2009, 21:58 |
11 |
Я это знаю. Ладно проехали.
0 |
2815 / 1406 / 107 Регистрация: 07.03.2009 Сообщений: 4,446 |
|
06.06.2009, 22:01 |
12 |
System.exe, в матрице, элементы главное диагонали находятся с одинаковым индексами i и j.. в вашем коде, вы производите проверку: если i равно j тогда выводим… а по сути можно и не проводить проверку, лишь прогнать массив от одного до пяти, и для доступа использовать индекс [i][i]… обход произойдет исключительно по главной диагонали..
0 |
Перейти к содержанию
Положительные элементы главной диагонали
Просмотров 3.5к. Обновлено 26 октября 2021
Диагонали выделяют только в том случае, если матрицы квадратные, то есть количество строк равно количеству столбцов. Элементы главной диагонали имеют индексы [1,1], [2,2], … [N,N] (при условии индексации с единицы).
Поскольку первый индекс равен второму, то, перебирая матрицу в цикле, при обращении к элементам главной диагонали достаточно использовать одну переменную счетчик (например, i): имя_массива[i,i].
Если очередной элемент диагонали больше нуля, то выводим его на экран.
Pascal
const
N = 10;
var
arr: array[1..N,1..N] of integer;
i,j: byte;
begin
randomize;
for i:=1 to N do begin // просто заполнение матрицы
for j:=1 to N do begin
arr[i,j] := random(100) - 50;
write(arr[i,j]:4);
end;
writeln;
end;
writeln;
for i:=1 to N do // решение задачи
if arr[i,i] > 0 then
write(arr[i,i]:4);
writeln;
end.
-27 -12 37 -33 4 -44 44 5 21 -11
-46 -18 2 2 31 -36 47 -33 -11 41
-12 47 41 14 25 26 6 22 49 -48
-22 -7 -25 49 -13 -26 13 31 -15 -11
-5 30 31 -26 -48 26 44 1 -49 -4
22 -49 18 -20 -5 -25 0 -8 16 -19
-21 -5 30 -14 27 -35 -34 42 39 21
-2 -24 19 -48 -13 2 -35 44 -1 14
-47 45 -21 29 17 -9 27 -38 25 7
47 -20 -45 -22 -36 -43 12 5 40 -2241 49 44 25
Язык Си
#include < stdio.h>
#define N 10
main() {
int a[N][N], i, j;
srand(time(NULL));
for (i=0; i< N; i++) {
for (j=0; j< N; j++) {
a[i][j] = rand()%100 - 50;
printf("%4d", a[i][j]);
}
printf("n");
}
printf("n");
for (i=0; i< N; i++)
if (a[i][i] > 0) {
printf("%4d", a[i][i]);
}
printf("n");
}
Python
from random import random
N = 10
a = []
for i in range(N):
z = []
for j in range(N):
n = int(random() * 100) - 50
z.append(n)
print("%4d" % n, end='')
print()
a.append(z)
print()for i in range(N):
if a[i][i] > 0:
print("%4d" % a[i][i], end='')
print()
КуМир
алг полож элем диаг
нач
цел N=10
цел таб a[1:N,1:N]
цел i, j
нц для i от 1 до N
нц для j от 1 до N
a[i,j] := int(rand(0,100)) - 50
вывод a[i,j]:4
кц
вывод нс
кц
вывод нснц для i от 1 до N
если a[i,i] > 0 то
вывод a[i,i], " "
все
кц
вывод нс
кон
Basic-256
N = 10
dim a(N,N)
for i=0 to N-1
for j=0 to N-1
a[i,j] = int(rand*100)-50
print a[i,j]+" ";
next j
next ifor i=0 to N-1
if a[i,i] > 0 then print a[i,i] + " ";
next i
Частным
случаем матрицы является квадратная
матрица,
т.е.
матрица, имеющая одинаковое количество
строк и столбцов (рис.43).
-
X[1,1]
X[1,2]
X[1,3]
X[2,1]
X[2,2]
X[2,3]
X[3,1]
X[3,2]
X[3,3]
Рис.43
Элементы
матрицы, выделенные на рис.43, называются
главной
диагональю.
Отличительной
особенностью этих
элементов является то, что они имеют
одинаковые
номера строки и столбца.
Поэтому в i-ой
строке индексы элемента
главной диагонали
матрицы Х будут X[i,i].
Для обработки
элементов главной
диагонали
требуется изменять только одну
переменную,
поэтому необходимо всего один
цикл, а не два,
как при обработке
всей матрицы.
На рис.44 показан алгоритм
нахождения суммы положительных
элементов главной диагонали. Ниже
приведён фрагмент
программы к этому алгоритму.
•
• •
S:=0;
for
i:=1
to
N
do
if
X[i,i]>0 then
S:=S+X[i,i];
writeln(‘S=’
, S);
• • •
Рис.44
3.2.6. Обработка элементов побочной диагонали
Побочная
диагональ
(рис.45)
существует только в квадратной
матрице.
-
X[1,1]
X[1,2]
X[1,3]
X[2,1]
X[2,2]
X[2,3]
X[3,1]
X[3,2]
X[3,3]
Рис.45
Н
етрудно
заметить, что элемент побочной диагонали
матрицы Х в первой строке имеет индексы
Х[1,N],
во второй строке – Х[2, N-1], в третьей –
Х[3, N-2].
Отсюда можно заключить, что в i-ой
строке элемент побочной диагонали будет
иметь индексы Х[I,
N-I+1].
На
рис.46 показан алгоритм нахождения
количества равных
нулю элементов побочной диагонали. Ниже
представлен фрагмент
программы к этому алгоритму.
Рис.46
• • •
К:=0;
for
i:=1
to
N
do
if
X[i,N-i+1] = 0 then
K:=K+1
writeln(
‘K=’ , K) ;
• • •
3.2.7. Обработка элементов квадратных матриц, расположенных над и под главными и побочными диагоналями
На
рис. 47 приведена схема расположения
элементов относительно главной диагонали.
Г
лавная
диагональ (ГД) Элементы,
расположенные над ГД
-
гд
Гд
ГД
гд
Элементы,
расположенные под ГД
Рис.
47
Рассмотрим
элементы, расположенные над главной
диагональю матрицы. Для матрицы А
размером 4х4 эти элементы будут иметь
следующие индексы:
в
первой строке: A[1,2],
A[1,3],
A[1,4];
во
второй строке: A[2,3],
A[2,4];
в
третьей строке: A[3,4];
в
четвертой строке элементов нет.
Проанализировав
полученные индексы, можно определить,
что для элементов, расположенных выше
главной диагонали, номер столбца всегда
больше номера строки. Поэтому при
организации циклов для обработки этих
элементов нужно учитывать, что в первой
строке нужно рассматривать элементы,
начиная со второго столбца, во второй
строке – начиная с третьего столбца, в
третьей строке – начиная с четвертого
столбца. В общем случае элементы i-ой
строки нужно обрабатывать, начиная с
элемента из i+1
столбца и заканчивая элементом последнего
(N-го)
столбца.
Для
примера рассмотрим алгоритм нахождения
суммы положительных элементов,
расположенных над главной диагональю
(рис.
48).
S:=0;
For
i :=1 to N-1 do
For
j:= I +1 to N do
If
A[I,j]>0 then
S:=S+A[I,j];
Рис.
48
Рассмотрим
элементы, расположенные под главной
диагональю матрицы. Для матрицы А
размером 4х4 эти элементы будут иметь
следующие индексы:
в
первой строке элементов нет;
во
второй строке: A[2,1],
в
третьей строке: A[3,1],
А[3,2];
в
четвертой строке: A[4,1],
A[4,2],
A[4,3].
Проанализировав
полученные индексы, можно определить,
что для элементов, расположенных ниже
главной диагонали, номер столбца всегда
меньше номера строки. Поэтому при
организации циклов для обработки этих
элементов нужно учитывать, что во второй
строке нужно рассматривать элементы
строки, заканчивая элементами из первого
столбца, в третьей строке – заканчивая
элементами из второго столбца, в четвертой
строке – заканчивая элементами из
третьего столбца. В общем случае элементы
i-ой
строки нужно обрабатывать, начиная с
элемента из первого столбца и заканчивая
рассмотрение элементами из i-1
столбца.
Для
примера рассмотрим алгоритм нахождения
произведения отрицательных элементов,
расположенных под главной диагональю
(рис.
49).
P:=1;
For
i :=2 to N do
For
j:= 1 to I-1 do
If
A[I,j]<0 then
P:=P+A[I,j];
Рис.
49
На
рис. 50 приведена схема расположения
элементов относительно побочной
диагонали.
Э
лементы,
Побочная диагональ(ПД)
р
асположенные
над ПД
-
пд
Пд
Пд
пд
Элементы,
расположенные под ПД
Рис.
50
Рассмотрим
элементы, расположенные над побочной
диагональю матрицы. Для матрицы А
размером 4х4 эти элементы будут иметь
следующие индексы:
в
первой строке: A[1,1],
A[1,2],
A[1,3];
во
второй строке: A[2,1],
A[2,2];
в
третьей строке: A[3,1];
в
четвертой строке элементов нет.
В
общем случае элементы i-ой
строки нужно обрабатывать, начиная с
элемента первого столбца и заканчивая
элементом из N-i
столбца.
Для
примера рассмотрим алгоритм нахождения
количества нулевых элементов, расположенных
над побочной диагональю (рис.
51).
K:=0;
For
i :=1 to N-1 do
For
j:= 1 to N-i do
If
A[I,j]=0 then
K:=K+1;
Рис.51
Теперь
рассмотрим элементы, расположенные под
побочной диагональю матрицы. Для матрицы
А размером 4х4 эти элементы будут иметь
следующие индексы:
в
первой строке элементов нет;
во
второй строке: A[2,4],
в
третьей строке: A[3,3],
А[3,4];
в
четвертой строке: A[4,2],
A[4,3],
A[4,4].
В
общем случае элементы i-ой
строки нужно обрабатывать, начиная с
элемента из столбца под номером N+2-I
и заканчивая элементом из последнего
(N-го
столбца).
Для
примера рассмотрим алгоритм нахождения
максимального среди элементов,
расположенных под побочной диагональю
(рис. 52).
M
AX:=A[2,N];
{за начальное значения максимума берем
любой элемент, расположенный под побочной
диагональю}
For i :=2 to N do
For
j:= N+2-i to N do
If
A[I,j]>MAX then
MAX:=A[I,j];
Рис. 52
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Python
Python задачи
Задачка. Положительные элементы главной диагонали
Найти положительные элементы главной диагонали квадратной матрицы.Разбор задачи на Python
задача на python
Диагонали выбираются только в том случае, если матрицы квадратные, то есть количество строк равно количеству столбцов. Элементы главной диагонали имеют индексы , , … (при условии нумерации от единицы).
Поскольку первый индекс равен второму, при обходе матрицы в цикле достаточно использовать одну переменную-числитель (например, i): имя_массива при обращении к элементам главной диагонали.
Если следующий диагональный элемент больше нуля, отобразите его на экране.
решение задачи с python
from random import random
N = 10
a = []
for i in range(N):
z = []
for j in range(N):
n = int(random() * 100) – 50
z.append(n)
print(“%4d” % n, end=”)
print()
a.append(z)
print()
for i in range(N):
if a[i][i] > 0:
print(“%4d” % a[i][i], end=”)
print()
Python
Python задачи
Все задачи на python
Репост статьи
29 апреля 2022 г.
Комментарии могут оставлять только зарегестрированные пользователи!
Комментарии
Ваш комментарий будет первым !