C ++ Массив, как работать с элементами выше / ниже главной / вторичной диагонали? - PullRequest
0 голосов
/ 18 ноября 2018

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

Сначала я должен сделать все элементы выше вторичной диагонали (без самой диагонали) равными 0. Второе, что я должен сделать с первой матрицей, это то, что я должен сделать все элементы из главнойдиагональ (включая диагональ), чтобы быть суммой индексов числа, а затем увеличить сумму до степени линии, которой она является.Например, если в третьем ряду номер 37, его нужно заменить на (3 + 7) ^ 3. И, наконец, мне нужно взять элементы из первой матрицы по спирали и напечатать их один за другим.

Примерно так: мы начинаем с первого числа и печатаем числа с первого рулона - слева направо, когда мы достигаем конца, мы начинаем печатать числа вниз, пока не достигнем самого низкого рулона, затем мывыведите их назад, к первому столбцу, затем вверх и так далее ...

Мой код для первой части такой:

#include "pch.h"
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand((int)time(NULL));
double **arr = NULL;
unsigned int M = 0;
unsigned int N = 0;
cout << "Enter number of rolls and columns: " << endl;
cin >> M >> N;
arr = new double*[M];
int i;
int j;
int m = 0;
for (int i = 0; i <= M - 1; i++)   
arr[i] = new double[M];
for (i = 0; i <= M-1; i++) {
    for (j = 0; j <= N-1; j++) {
        arr[i][j]= (rand() % ((12*12)-12)) - 12;
    }
}
for (i = 0; i <= M-1; i++) {
    for (j = 0; j <= N-1; j++) {
        cout << arr[i][j] << "\t";
    }
    cout << endl;
}
    delete[] arr;
arr = NULL;
return 0;
}
...