Как найти сумму элементов выше побочной диагонали

Merdok68

0 / 0 / 0

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

Сообщений: 1

1

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

16.02.2015, 17:45. Показов 16838. Ответов 3

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


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

Ребят такая проблема.
Надо найти сумму всех элементов выше побочной диагонали квадратной матрицы,вот код,помогите пожалуйста.

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>
#define N 100
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int a[N][N], n, i, j, S = 0;
    
    cout << "Введите размерность квадратной матрицы: ";
    cin >> n;
    system("cls");
    cout << "Размерность вашей квадратной матрицыnСтрок: " << n << "nСтолбцов: " << n << endl;
 
    cout << "Введите элементы матрицы:n";
    for (i = 0; i < n; i++)
        for (j = 0; j < n; j++)
           cin >> a[i][j];
    for (int i = 0; i < n - i; i++)
       for (int j = 0; j < i; j++)
            S +=a[i][j];
    cout << "Сумма всех элементов выше боковой диагонали = " << S << endl;
    system("pause");
    return 0;
}



0



zss

Модератор

Эксперт С++

13104 / 10376 / 6207

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

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

16.02.2015, 18:52

2

19 строка

C++
1
2
    for ( i = 0; i < n - 1; i++) // все строки, кроме последней
       for (j = 0; j < n-i-1; j++)



0



16 / 3 / 2

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

Сообщений: 132

23.10.2019, 09:19

3

Вбей матрицу 5 на 5 и посмотри.В 3 на 3 все работает, а вот 5 на 5 хрень.



0



Yetty

7427 / 5021 / 2891

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

Сообщений: 15,694

23.10.2019, 11:48

4

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
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int n;
    cout << "n="; cin >> n;
    
      double **a = new double*[n], sum_hs=0.0;
    for (int i = 0; i < n; i++)
         a[i]=new double[n];
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
        a[i][j]=rand()%9+ 1;
        if (i<n-1-j) sum_hs+=a[i][j];
        cout << a[i][j] << " ";
        }
    cout << "n";
    }
    
    cout << "sum=" << sum_hs << "n";
    
    for (int i = 0; i < n; i++)
    delete[]a[i];
    delete[]a;
 
system("pause");
return 0;
}



0



IT_Exp

Эксперт

87844 / 49110 / 22898

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

Сообщений: 92,604

23.10.2019, 11:48

Помогаю со студенческими работами здесь

Найти max среди элементов матрицы, лежащих ниже побочной диагонали, и min среди элементов выше главной диагонали
2. В матрице n-го порядка найти максимальный среди элементов, лежащих ниже побочной диагонали, и…

Найти сумму элементов матрицы выше побочной диагонали
Нужно найти сумму элементов, которые выше боковой диагонали:
#include &lt;iostream&gt;
#include…

Найти произведение минимальных элементов расположенных выше побочной диагонали матрицы
2.даны массивы A(5,5),B(5,5),C(5,5). найти произведение минимальных элементов расположенных выше…

Найти сумму положительных элементов матрицы, стоящих выше побочной диагонали
#include &lt;iostream&gt;
#include &lt;conio.h&gt;
#include &lt;stdio.h&gt;
#include &lt;ctime&gt;
#include &lt;stdlib.h&gt;…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

4

Формулировка задачи:

Задан двухмерный массив целых чисел А размером М на N. Найти сумму элементов, расположенных выше побочной диагонали.
дякую

Код к задаче: «Найти сумму элементов матрицы, расположенных выше побочной диагонали»

textual

Листинг программы

var
  A: array[1..25, 1..25] of integer;
  i, j, N, S: integer;
  
begin
  write(' N = ');
  readln(N);
  writeln;
  S := 0;
  randomize;
  for i := 1 to N do
  begin
    for j := 1 to N do
    begin
      a[i, j] := -100 + random(200);
      write(a[i, j]:4);
     { У элементов выше побочной диагонали 
     сумма индексов меньше N + 1: }
      if i + j < N + 1 then S := S + a[i, j]
    end;
    writeln;
  end;
  writeln;
  write('Сумма элементов выше побочной диагонали:  ', S)
end.

Главная

» 2015 » Апрель » 2 » сумма элементов матрицы выше и ниже побочной диагонали


08:02

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

#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, «Russian»);  
    int n,m;
    cout << «Введите размер матрицы [n x m]: «;
    cin >> n >> m;

    // выделение памяти
    double **a;
    a=new double *[n];
    for (int i=0;i<n;i++) 
        a[i]=new double [m];

    // заполнение матрицы случайными числами
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
        {
            a[i][j]=rand()%10;
        }
    cout << «Матрица A:»<<endl;
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<m;j++)
            cout <<a[i][j]<<» «;
        cout <<endl;
    }

    // поиск суммы элементов над и под побочной диагональю
    double s1,s2;
    s1=0;
    for (int i=0;i<n-1;i++)
    {
        for (int j=0;j<n-i-1;j++)
            s1+=a[i][j];
    }
    cout << «Сумма элементов над побочной диагональю = «<<s1<<endl;
    s2=0;
    for (int i=n-1;i>0;i—)
    {
        for (int j=n-i;j<m;j++)
            s2+=a[i][j];
    }
    cout << «Сумма элементов под побочной диагональю = «<<s2<<endl;

    //Освобождение памяти
    for (int i=0;i<n;i++) 
        delete []a[i];
    delete []a;

    system(«pause»);
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5

Просмотров: 3460 |

| Рейтинг: 3.0/1

Тем, кто знакомым с математическими матрицами, будет не трудно освоить и двумерные массивы в Pascal. Матрица – это математический объект, представляющий собой прямоугольную таблицу. Таблица состоит из элементов, которые находятся на пересечении строк и столбцов, определяющих их, то есть i-ая строка и j-ый столбец задают адрес k-ому элементу матрицы (kij). Двумерные массивы абсолютно аналогичны математическим матрицам.

В отличие от одномерных массивов, двумерные характеризуются в программе парой индексов, один из которых соответствует номеру строки, другой – столбца:

Mas[m, n], где Mas – имя массива, n – номер строки, а m – номер столбца.

Описать матрицу в программе можно несколькими способами:

1) В разделе описания переменных:

Var Mas: Array[1..n, 1..m] of <тип элементов>;

2) При помощи одномерного массива, элементами которого являются одномерные массивы.
Пример:

Const
n = 5; m = 10;
Type
Arr1 = Array[1..m] of <тип элементов >;
Arr2 = Array[1..n] of arr1;
Var Mas: arr2;

Переменная Mas – матрица, состоящая из пяти строк, в каждую из которых включено по десять элементов.

3) Предыдущий способ можно упростить так:

Const n = 5; m = 10;
Турe arr=Array[1..n] Of Аrrау[1..m] of <тип элементов>;
Var Mas: arr;

4) И снова сократив запись, получим:

Const n = 5; m = 10;
Type arr = Array[1..n,1..m] of <тип элементов>;
Var Mas: arr;

Для обработки содержимого матрицы, удобно пользоваться вложенными циклами:

For i:= 1 To n Do
  For j:= 1 To m Do

Например, для заполнения массива случайнми числами:

for i:=1 to n do
  for j:=1 to n do 
    x[i,j]:=random(100); 

Для вывода двумерного массива вещественных чисел размером n строк, m столбцов:

for i:=1 to n do begin
  for j:=1 to m do 
    write(x[i,j]:5:2);
  writeln;
end;

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

program input_and_output_array;
uses crt;
const n=3; m=3;
var i, j: integer;
mas: array[1..n, 1..m] of integer;
begin
  {ввод массива}
  for i:=1 to n do
    for j:=1 to m do
    begin
      write(' Элемент ', i,' строки, ',j,' столбца = ');
      readln(mas[i, j]);
    end;
  writeln(' Получившаяся матрица: ');
  {вывод массива}
  for i:=1 to n do
  begin
    for j:=1 to m do
    begin
      write(mas[i, j]:5);
    end;
  writeln
  end;
end.

Количество элементов в массиве (его размерность) можно узнать, умножив количество строк на количество столбцов.

Сумма всех элементов квадратной матрицы:

sum:=0;

for i:=1 to n do
  for j:=1 to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum); 

Сумма элементов главной диагонали квадратной матрицы (элементы главной диагонали имеют одинаковые индексы -x[1,1], x[2,2] и т.д.):

sum:=0;

for i:=1 to n do 
  sum:=sum+x[i,i];

writeln('Сумма=',sum);

Сумма элементов побочной диагонали (диагонали противоположной главной). Индексы элементов побочной диагонали в сумме равны n+1, т.е. i+j=n+1 или j=n+1-i:

sum:=0;

for i:=1 to n do 
  sum:=sum+x[i,n+1-i];

writeln('Сумма=',sum);

Сумма элементов ниже главной диагонали квадратной матрицы (строго ниже):

sum:=0;

for i:=1 to n do
  for j:=1 to n do 
    if i>j then 
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Можно не просматривать весь массив, а брать только нужные элементы:

sum:=0;

for i:=2 to n do
  for j:=1 to i-1 do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

Сумма элементов выше и на главной диагонали квадратной матрицы:

sum:=0;

for i:=1 to n do
  for j:=1 to n do
    if i<=j then 
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Здесь также можно не просматривать весь массив, а брать только нужные элементы:

sum:=0;

for i:=1 to n do
  for j:=i to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

Сумма элементов ниже побочной диагонали квадратной матрицы (строго ниже) :

sum:=0;

for i:=1 to n do
  for j:=1 to n do
    if i+j>n+1 then 
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Можно не просматривать весь массив, а брать только нужные элементы:

sum:=0;

for i:=2 to n do
  for j:=n+2-i to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

Если надо посчитать сумму элемсентов ниже побочной диагонали и на ней, то в предыдущем примере, при просмотре всего массива в предыдущем примере надо заменить знак отношения > на >=, а при просмотре толко нужных элементов применить такой код:

sum:=0;

for i:=1 to n do
  for j:=n+1-i to n do 
    sum:=sum+x[i,j];

writeln('Сумма=',sum);

При подсчете суммы элементов выше и на главной диагонали, выше и на побочной диагонали возможно применине такого кода:

sum:=0;

for i:=1 to n do
  for j:=1 to n do
    if (i<=j) and (i+j<=n+1) then
      sum:=sum+x[i,j];

writeln('Сумма=',sum);

Подсчет сумм элементов по строкам:

for i:=1 to n do begin
  sum:=0;

  for j:=1 to n do 
    sum:=sum+x[i,j];

  writeln('Сумма ',i,'-й строки',sum);
end;

Подсчет сумм элементов по столбцам:

for j:=1 to n do begin
  sum:=0;

  for i:=1 to n do 
    sum:=sum+x[i,j];

  writeln('Сумма ',j,'-го столбца ',sum);
end;

Безусловно суммы по строкам и столбцам можно записывать в одномерный массив. Например, для сумм по столбцам:

for i:=1 to n do 
  sum[j]:=0;

for i:=1 to n do
  for j:=1 to n do 
    zum[j]:=sum[j]+x[i,j];

{вывод сумм по столбцам}
for i:=1 to n do 
  write(sum[i]:4);
writeln; 

Суммы элементов по диагоналям, параллельным главной диагонали.

Очевидно, что таких сумм будет 2n-1. Кроме того, разности индексов эдементов, стоящих на одной диагонали будут равны друг другу. Имеется в виду разность «номер строки минус номер столбца». Эти разности будут меняться от -n+1 для самой верхней диагонали s1, содержащей всего лишь один элемент, до n-1 для диагонали s2N-1, расположенной в самом низу матрицы и содержащей также всего один элемент. Таким образом, для подсчета сумм мы должны объявить массив:

Var sum:array[-n+1..n-1] of integer;

Число элементов в этом массиве будет 2n-1. Код для подсчета этих сумм:

for i:=-n+1 to n-1 do 
  sum[i]:=0;

for i:=1 to n do
  for j:=1 to n do 
    sum[i-j]:=sum[i-j]+x[i,j];

for i:=-n+1 to n-1 do 
  write(sum[i]); 

Суммы элементов по диагоналям, параллельным побочной диагонали.

for i:=2 to 2*n do 
  sum[i]:=0;

for i:=1 to n do
  for j:=1 to n do 
    sum[i+j]:=sum[i+j]+x[i,j];

for i:=2 to 2*n do 
  write(sum[i]);

Суммы элементов по периметрам двумерного массива.

Cледует различать четный или нечетный порядок матрицы n. Число сумм будет равно k=n div 2 при четном n и k=n div 2 +1 при нечетном значении n.

Счет суммы начинается по строке i от столбца j равного i и заканчивается столбцом n-i+1, т.е. начинается с элемена находящегося на главной диагонали и заканчивается элементом на побочной диагонали.

Одновременно учитываются элементы из параллельной строки, индекс которой равен n-i+1.

Затем считаем элементы по двум паралельным столбцам i и n-i+1 (не учитывая элементы, стоящие в строках). Если n -нечетное число, то выводим значение центрального элемента массива x[k+1,k+1].

k:=n div 2;

for i:=1 to k do begin
  sum:=0;

  {строки}
  for j:=i to n-i+1 do
    sum:=sum+x[i,j]+x[n-i+1,j];

  {столбцы}
  for j:=i+1 to n-i do
    sum:=sum+x[j,i]+x[j,n-i+1];

  writeln(sum); {вывод суммы}
end;

if n mod 2=1 then
  writeln(x[k+1,k+1]); 

program pr;

var

a:array[1..4,1..4] of integer;

i,k,sum,j:integer;

begin

writeln(‘Ввод значений матрицы(горизонтально по рядам)’);

for i:=1 to 4 do

begin

for k:=1 to 4 do

 begin

 readln(a[i, k]);

 end;

end;

writeln(‘получившаяся матрица:’);

for i:=1 to 4 do

begin

for k:=1 to 4 do

 begin

 write(a[i, k]);

 end;

 writeln();

end;

sum:=0;

j:=4;

for i:=1 to 4 do

begin

for k:=1 to 4 do

 begin

 if k<j then sum:=sum+a[i,k];

 end;

 j:=j-1;

end;

writeln(‘сумма: ‘,sum);

end.

Понравилась статья? Поделить с друзьями:
  • Как найти свою вторую половину по сторонам
  • Поцарапал стекло на телефоне как исправить
  • Как найти площадь двускатной крыши
  • Как найти пижаму в роблокс
  • Как найти свое местоположение в земли