Вывести матрицу вторичной диагонали в C ++ с помощью цикла for?

У меня есть простая программа, в которой я хочу напечатать все элементы во вторичной диагонали матрицы — это числа 5,9,13, -21,12, но программа работает не так, как ожидалось. Что я делаю неправильно?

#include <iostream>
#define SIZE 5
int a[SIZE][SIZE]={
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{100,-21,-70,345,77},
{12,17,765,98,55}
};

for(int i=0;i<5;i++)//The first index increases
for(int k=5;k>0;k--)//The second index decreases
cout<<a[i][k]<<endl;//Printing the element

0

Решение

Там нет необходимости ни секунды для цикла. Вы можете сделать это, используя только одно:

for (int i = 0; i < SIZE; i++){
std::cout << a[i][SIZE - i - 1] << ' ';
}

Таким образом, у вас есть два индекса, идущие в разные стороны, используя один for петля.

2

Другие решения

Ну ты сделал

for (k=5; k>0; k--)

но нет a[0][5]

последний элемент в первом ряду a[0][4]
поэтому ваш массив должен начинаться с 4 и уменьшаться до 0

for (k=4; k>=0; k--)

Кстати, это можно сделать всего за 1 цикл.

Для каждого элемента второй диагонали сумма индексов равна 4.

0+4=4
1+3=4
2+2=3
3+1=4
4+0=4

так что вы можете написать это как a[i][4-i]

for(i=0; i<5; i++)
cout<<a[i][4-i]<<endl;
1

Попробуйте сделать так:

for(int i=0; i<5; i++) {
cout << a[i][4-i] << endl;
}
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector