Как найти элементы главной диагонали в массиве

#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;
}

ТарасПрогер's user avatar

ТарасПрогер

2,2691 золотой знак5 серебряных знаков26 бронзовых знаков

задан 5 апр 2022 в 15:47

Даниил Шаронов's user avatar

Вы собираетесь ввести четверть миллиона чисел с клавиатуры? Или генерируйте эти числа, или берите поскромнее размер массива. Не нужно использовать лишние объекты и не нужен никакой вложенный цикл для проверки элементов только главной диагонали. Все очень просто:

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 Hovsepyan's user avatar

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's user avatar

vanesicks

4683 серебряных знака15 бронзовых знаков

ответ дан 5 апр 2022 в 16:10

CameL's user avatar

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

ТарасПрогер's user avatar

ТарасПрогерТарасПрогер

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

C++
1
2
for (int i = 0; i < 5; i++)
    cout << arr[i][i] << 'n';



0



92 / 88 / 58

Регистрация: 14.05.2009

Сообщений: 202

06.06.2009, 13:13

3

for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i==j)
cout<<a[i][j];
else continue;
}
}



0



Search..

06.06.2009, 13:14

Не по теме:

System.exe: Та через Теорему Фундука пойдет… 😀



0



Monte-Cristo

06.06.2009, 13:58

Не по теме:

Search.., Главное что работает!) а все остальное пофик 😀
для прикладного кодинга пойдет (хоть и выполнится на n(n-1) итерация больше ) 🙂 вот в системные программисты его не возьмут…



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

Цитата
Сообщение от System.exe
Посмотреть сообщение

Я вообще только нужную часть кода написал. Так что прежде чем умничать внимательно вдумайся и разберись. Можешь проверить , работает все как надо.

во-первых, не понятно кому адрессовано сообщение…
во-вторых, оскорблений в вашу сторону нанесено не было…
в-третьих, постить код:

Цитата
Сообщение от System.exe
Посмотреть сообщение

for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i==j)
cout<<a[i][j];
else continue;
}
}

после кода:

Цитата
Сообщение от FunDuck
Посмотреть сообщение

for (int i = 0; i < 5; i++)
cout << arr[i][i] << ‘n’;

не целесообразно… так как код 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 -22

41 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
print
next i
print

for 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

решение задачи с 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 г.

Комментарии могут оставлять только зарегестрированные пользователи!



Комментарии

Ваш комментарий будет первым !

Напиши программу, которая принимает натуральное число n, а затем n чисел от 1 до 100. выведи максимальное из них, которое заканчивается на 1. если такого числа нет, напечатай «нет».

Pascal задача.Даны натуральные числа n, m. Получите сумму m последних цифр числа n.

Добавить комментарий