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

Нахождение суммы элементов главной диагонали матрицы

Для нахождения суммы элементов главной диагонали матрицы (след матрицы) выберите нужный размер исходной матрицы и заполните её элементы.

Другие онлайн калькуляторы

  • Транспонирование матрицы
  • Нахождение союзной матрицы
  • Нахождение обратной матрицы
  • Вычисление определителя матрицы
  • Приведение матрицы к треугольному виду
  • Возведение матрицы в степень
  • Вычисление ранга матрицы
  • Сложение матриц
  • Вычитание матриц
  • Умножение матриц
  • Умножение матрицы на число

Описание онлайн калькулятора

С помощью данного онлайн калькулятора Вы сможете найти сумму элементов главной диагонали матрицы (след матрицы) или проверить правильность своего решения.

Для нахождения суммы элементов главной диагонали матрицы (след матрицы), исходная матрица должна быть квадратной.

Icon info

Описание работы онлайн калькулятора

  • Минимальный размер матрицы 2х2;
  • Максимальный размер матрицы 10х10;
  • В поля ввода значений элементов матриц, можно вводить следующие типы чисел:
    • Натуральные (0; 3; 9);
    • Отрицательные (-43);
    • Десятичные (1,5 или 1.5);
    • Дробные (2/3).
  • Максимальное количество вводимых символов 7;
  • При нажатии кнопки «Вывести результат»
    выводится результат требуемой операции.

Свои вопросы по работе данного онлайн калькулятора, Вы всегда можете задать в комментариях.

kormorant

0 / 0 / 0

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

Сообщений: 25

1

Найти сумму элементов главной диагонали матрицы

27.01.2015, 11:18. Показов 24189. Ответов 20

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Помогите решить задачи,я недавно начал заниматься программированием,не разобрался во всём.Программа Borland 5.0.
1)Дана квадратная матрица порядка M. Найти сумму элементов ее главной диагонали.
2)Получить таблицу значений функции y=f(x) при изменении x на отрезке[a;b]c шагом h. Отрезок[-4;4], шаг h=0.5(функция записана ниже).

https://www.cyberforum.ru/cgi-bin/latex.cgi?f(x)=left {e^{x-2} , 0leq xleq 2 \ lg(x) , x>2 \ 0.1 , x<0

 Комментарий модератора 
В теме должна быть одна задача!

Как написать матрицу я понял,а вот как складывать элементы диагонали незнаю.

C++
1
2
3
4
5
6
7
8
9
#include <iostream> 
using namespace std;
int main() 
{
    int A[n][n]={};
    for(int i=0; i<n; i++)
    for(int j=0; j<n; j++)
       {
           cin >> A[i][j];

По поводу второй сказать ничего не могу,ищу примеры.Помогите кто чем может.



0



zss

Модератор

Эксперт С++

13100 / 10373 / 6206

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

Сообщений: 27,744

27.01.2015, 12:20

2

C++
1
2
3
int sum=0;
 for(int i=0; i<n; i++)
     sum+=A[i][i];



1



0 / 0 / 0

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

Сообщений: 25

28.01.2015, 13:28

 [ТС]

3

а как это обьединить,чтоб работало?Не получается.



0



Модератор

Эксперт С++

13100 / 10373 / 6206

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

Сообщений: 27,744

28.01.2015, 14:07

4

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

Не получается.

Пример того, что получается, приведите.



0



kormorant

0 / 0 / 0

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

Сообщений: 25

28.01.2015, 14:43

 [ТС]

5

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream> 
using namespace std;
 
int main() 
{
    const int n=10;
    int A[n][n]={};
    for(int i=0; i<n; i++)
    for(int j=0; j<n; j++)
    {
        cin >> A[i][j];
int sum=0;
 for(int i=0; i<n; i++)
     sum+=A[i][i];
cout <<"Сумма элементов главной диагонали sum="<<sum << endl;
    return 0;
}

Чего то не хватает.Или строки, как получить сумму, не полностью записаны.И ещё ошибки ссылаются на элемент i(строка вроде бы,j-столбец).



0



0 / 0 / 0

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

Сообщений: 25

30.01.2015, 12:32

 [ТС]

6

Можете подсказать в чём проблемма?



0



Enno

267 / 170 / 40

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

Сообщений: 1,087

Записей в блоге: 1

30.01.2015, 12:47

7

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

C++
1
2
3
for(int j=0; j<n; j++)
{
 cin >> A[i][j];

Фигурную скобку эту убери.



0



Тамика

Котовчанин

942 / 482 / 200

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

Сообщений: 3,338

Записей в блоге: 37

30.01.2015, 15:01

8

kormorant,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
using namespace std;
 
int main() 
{
    const int n=10;
    int A[n][n];
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            cin >> A[i][j];
    int sum=0;
    for(int i=0; i<n; i++)
        sum+=A[i][i];
    cout <<"Сумма элементов главной диагонали sum = "<<sum << endl;
    return 0;
}



0



0 / 0 / 0

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

Сообщений: 25

30.01.2015, 16:29

 [ТС]

9

Множественное заявление для i. Ссылается на строку 12.После удаления строки(ради эксперимента) выходит окно с введением данных,пустое…При вводе n-ного числа переменных всё равно ничего не происходит.Кстати,использование…
using namespace std;
….в любом моём коде даёт ошибку.



0



Тамика

Котовчанин

942 / 482 / 200

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

Сообщений: 3,338

Записей в блоге: 37

30.01.2015, 16:33

10

kormorant, ну попробуйте иначе. У меня этот код работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream> 
 
int main() 
{
    const int n=10;
    int A[n][n];
    for(int i=0; i<n; i++)
    {
        for(int j=0; j<n; j++)
        {
            A[i][j] = rand()%10;
            std::cout << A[i][j] << " ";
        }
        std::cout << std::endl;
    }
 
    int sum=0;
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            if (i == j)
                sum += A[i][i];
    std::cout <<"Сумма элементов главной диагонали sum = "<< sum << std::endl;
    system("pause>>null");
    return 0;
}



0



Ilot

Эксперт по математике/физикеЭксперт С++

2013 / 1342 / 382

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

Сообщений: 3,463

Записей в блоге: 6

30.01.2015, 16:39

11

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

Множественное заявление для i. Ссылается на строку 12.

В старом компиляторе Visual Studio переменная цикла обявлялась как переменная в текущей области видимости. Варианты решения проблемы:
1) Не объявлять переменную повторно. Т.е.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
using namespace std;
 
int main() 
{
    const int n=10;
    int A[n][n];
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            cin >> A[i][j];
    int sum=0;
    for(i=0; i<n; i++)
        sum+=A[i][i];
    cout <<"Сумма элементов главной диагонали sum = "<<sum << endl;
    return 0;
}

2)Дать переменной другое имя:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
using namespace std;
 
int main() 
{
    const int n=10;
    int A[n][n];
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            cin >> A[i][j];
    int sum=0;
    for(int k=0; k<n; k++)
        sum+=A[k][k];
    cout <<"Сумма элементов главной диагонали sum = "<<sum << endl;
    return 0;
}



0



0 / 0 / 0

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

Сообщений: 25

30.01.2015, 16:57

 [ТС]

12

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

В старом компиляторе Visual Studio переменная цикла обьявлялась как переменная в текущей области видимости. Варианты решения проблемы:
1) Не объявлять переменную повторно.

ошибка больше не выходит…но опять же можно вводить бесконечное количество переменных

Миниатюры

Найти сумму элементов главной диагонали матрицы
 



0



0 / 0 / 0

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

Сообщений: 25

30.01.2015, 17:16

 [ТС]

13

решил попробовать вбить команду end в окне ввода,выдал ответ.18492 при 2 переменных 3 и 3.даже незнаю чего ввожу,то ли количество столбцов и строк,то ли ещё чего нибудь.



0



Dimension

594 / 462 / 223

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

Сообщений: 1,710

30.01.2015, 17:25

14

кинь код посмотрю что у тебя там



0



kormorant

0 / 0 / 0

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

Сообщений: 25

30.01.2015, 17:32

 [ТС]

15

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream> 
 
int main() 
{
    const int n=10;
    int A[n][n];
    for(int i=0; i<n; i++)
        for(int j=0; j<n; j++)
            cin >> A[i][j];
    int sum=0;
    for(i=0; i<n; i++)
        sum+=A[i][i];
    cout <<"Summa elementov glavnoi diagonali sum = "<<sum << endl;
    return 0;
}



0



Dimension

594 / 462 / 223

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

Сообщений: 1,710

30.01.2015, 17:35

16

вы же понимаете ,что двумерный массив это так скажем таблица ,в вашем случае у нее 10 строчек по 10 элементов



0



ScorpiN

3 / 3 / 3

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

Сообщений: 25

30.01.2015, 17:40

17

У Вас массив А на 100 элементов, если заполнять не все элементы то в незаполненных может быть мусор.
Нужна начальная инициализация нулями.

C++
1
int A[n][n] = {0};



1



0 / 0 / 0

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

Сообщений: 25

30.01.2015, 17:42

 [ТС]

18

Матрица вы хотели сказать?Задаётся двумя параметрами i j.Количество строк и стобцов,ну или размерность- второго порядка,третьего порядка….Задать n не как постоянное число const int n=10?



0



Dimension

594 / 462 / 223

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

Сообщений: 1,710

30.01.2015, 17:45

19

матрица это и есть двумерный массив , я не могу понять в чем ваша проблема ?



0



0 / 0 / 0

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

Сообщений: 25

30.01.2015, 17:56

 [ТС]

20

Скорпион открыл мне глаза,мне дали пример с матрицей на 100 элементов,я б до ночи писал их,а так изменил на const int n=3
и всё.ввёл 9 элементов и выдало ответ.Всем спасибо за внимание и бесценную помощь.

Миниатюры

Найти сумму элементов главной диагонали матрицы
 



0



Перейти к содержанию

Вычислить сумму элементов главной или побочной диагонали матрицы

Просмотров 9.6к. Обновлено 15 октября 2021

Дана квадратная матрица. Вычислить сумму элементов главной или побочной диагонали в зависимости от выбора пользователя. Сумма элементов любой диагонали должна вычисляться в одной и той же функции.

В функцию следует передавать не только массив, но и информацию о том, что требуется вычислить, выраженную через тот или иной символ или число.

Если была выбрана сумма главной диагонали, то при определении ее элементов второй индекс матрицы будет равен первому и начинаться с первого элемента. В случае побочной диагонали второй индекс будет начинаться с последнего элемента и заканчиваться первым. Поэтому в теле функции перед проходом по матрице второму индексу присваивается либо 1 (или 0), либо размерность квадратной матрицы (N или N-1). При проходе второй индекс либо увеличивается на каждой итерации, либо уменьшается.

Pascal


const N = 10;
type
type_arr = array[1..N, 1..N] of byte;

var
arr: type_arr;
i, j: byte;
sum: byte;
ch: char;

function diagonal (var arr1: type_arr; c: char): byte;
var
sum1: byte;
i, j: byte;
begin
sum1 := 0;
if c = '1' then j := 1
else j:= N;
for i:=1 to N do begin
sum1 := sum1 + arr1[i][j];
if c = '1' then j := j + 1
else j := j-1;
end;
diagonal := sum1;
end;

begin
randomize;
for i:=1 to N do begin
for j:=1 to N do begin
arr[i,j] := random(10);
write(arr[i,j]:4);
end;
writeln;
end;
write('Главная (1) или побочная (2): ');
readln(ch);
if (ch = '1') or (ch = '2') then begin
sum := diagonal(arr, ch);
writeln(sum);
end;
end.



Пример(ы) выполнения программы на языке Pascal:

0 2 0 4 8 0 4 1 5 1
1 7 7 0 1 7 8 4 7 7
1 0 7 4 6 5 0 6 4 7
1 5 3 3 0 4 6 7 8 0
1 7 3 8 1 6 9 4 4 7
8 5 7 7 1 7 8 8 8 4
2 0 1 3 1 5 2 0 0 8
4 8 3 7 5 6 5 1 3 9
9 0 9 2 1 0 3 6 1 3
8 3 7 5 8 8 9 5 1 1
Главная (1) или побочная (2): 2
41

Язык Си


#include < stdio.h>
#define N 10
int diagonal(char c);
int a[N][N];

main() {
int i, j, sum;
char ch;
srand(time(NULL));
for (i=0; i< N; i++) {
for (j=0; j< N; j++) {
a[i][j] = rand() % 10;
printf("%3d", a[i][j]);
}
printf("n");
}
printf("Главная (1) или побочная (2): ");
scanf("%c", &ch);
sum = diagonal(ch);
printf("%dn", sum);
}

int diagonal(char c) {
int s, i, j;
s = 0;
if (c == '1')
for (i=0; i< N; i++)
s += a[i][i];
else
for (i=0, j=N-1; i< N; i++,j--)
s += a[i][j];
return s;
}

Python

сумма элементов главной диагонали матрицы python


def diagonal(l,c):
s = 0
i = 0
while i < N:
if c == '1':
s += l[i][i]
else:
s += l[i][N-i-1]
i += 1
return s

from random import random
N = 10
a = []
for i in range(N):
b = []
for j in range(N):
n = int(random()*10)
b.append(n)
print("%3d" % n, end='')
a.append(b)
print()

ch = input("Главная (1) или побочная (2): ")
if ch == '1' or ch == '2':
summa = diagonal(a,ch)
print(summa)

КуМир


цел N = 7
цел таб a[1:N,1:N]
алг
нач
цел i, j, sum
сим ch
нц для i от 1 до N
нц для j от 1 до N
a[i,j] := int(rand(0,10))
вывод a[i,j], " "
кц
вывод нс
кц
вывод "Главная (г) или побочная (п): "
ввод ch
если ch = "г" или ch = "п" то
sum := diag(ch)
вывод sum
все
кон

алг цел diag(сим c)
нач
цел s, i, j
s := 0
нц для i от 1 до N
если c = "г" то
s := s + a[i,i]
иначе
s := s + a[i,N-i+1]
все
кц
знач := s
кон

Составим квадратную матрицу из случайных чисел и запишем в таблицу Эксель начиная с ячейки C3.

Если размер матрицы 5х5 то вся матрица займёт диапазон C3:G7

Для наглядности можно выделить ячейки диагонали см Как в таблице Excel выделить диагональ другим цветом?

Придется воспользоваться формулой массива с выбором из всего диапазана ячеек у которых номер строки равен номеру столбца

Для нашей таблицы

номер строки можно вычислить по формуле =СТРОКА()-СТРОКА(С3)

номер столбца можно вычислить по формуле =СТООЛБЕЦ()-СТООЛБЕЦ(С3)

Суммируемое выражение:

ЕСЛИ( (СТРОКА(C3:G7) — СТРОКА(C3)) = (СТОЛБЕЦ(C3:G7) — СТОЛБЕЦ(C3)); C3:G7;0)

Общая формула массива для суммы элементов главной диагонали таблицы для диапазона C3:C7 выглядит так:

=СУММ( ЕСЛИ( (СТРОКА(C3:G7) — СТРОКА(C3)) = (СТОЛБЕЦ(C3:G7) — СТОЛБЕЦ(C3)); C3:G7;0))

ввод ограничиваем одновременным нажатием клавиш CTRL+SHIFT+ENTER (фигурные скобки появятся сами):

Нужно найти сумму элементов под главной диагонали матрицы.
К примеру,дана матрица

1 2 3 4
5 6 7 8
2 4 3 2
5 6 7 8

Нужна сумма цифр 5,2,4,5,6,7.
Я написал программу для вычисления главной диагонали.
Вот код:

int main()
{
    int sizeN,sizeM;
    cin >> sizeN;
    sizeM = sizeN;
    
    int array[sizeN][sizeM] = {};
    int total = 0;
    
    for (int i = 0; i < sizeN; i++) {
        for (int j = 0; j < sizeM; j++) {
            cin >> array[i][j];
        }
    }
    
    for (int i=0;i<sizeN;i++)
      for (int j=0;j<sizeM;j++)
          if (i==j){
              total+=array[i][j];
          } 
          
    cout << total;

    return 0;
}

Как вычислить сумму цифр под диагональю?

Понравилась статья? Поделить с друзьями:
  • Как на лице найти румяна
  • Как где найти поддержку
  • Как правильно составить заявление в управляющую компанию если нет отопления
  • Как найти страницу в одноклассниках по имени
  • Nexus mod manager unable to get write permissions for как исправить