【发布时间】:2020-12-15 11:00:54
【问题描述】:
正如我所想,我需要将函数printSecondaryDiagonal(实际上打印辅助对角线的元素)转换为一维数组,然后按升序对其元素进行排序,对吧?
附:一开始的二维数组必须是动态数组。此外,不能使用vector 来实现。只有malloc、calloc 和new
#include <iostream>
#include <iomanip>
using namespace std;
void getManual(int** arr, int rows, int columns);
void getRandom(int** arr, int rows, int columns);
void printSecondaryDiagonal(int** arr, int rows, int columns);
void main() {
int rowCount = 5;
int colCount = 6;
cout << "Enter quantity of rows: ";
cin >> rowCount;
cout << "Enter quantity of columns: ";
cin >> colCount;
int** arr = new int* [rowCount];
for (int i = 0; i < rowCount; i++) {
arr[i] = new int[colCount];
}
cout << " Array formation algorithm\n";
start:
cout << "Input number : \n1 for manual\n2 for random\n";
int k;
cin >> k;
switch (k) {
case 1: getManual(arr, rowCount, colCount);
break;
case 2: getRandom(arr, rowCount, colCount);
break;
default:cout << "Input 1 or 2, please.";
cout << endl << endl;
goto start;
}
cout << endl;
printSecondaryDiagonal(arr, rowCount, colCount);
for (int i = 0; i < rowCount; i++) { //очищуємо память для кожного рядка
delete[] arr[i];
}
delete[] arr;
}
void getManual(int** arr, int rows, int columns) { //введення з клавіатури
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
cout << "a[" << i << "][" << j << "]=";
cin >> arr[i][j];
//cin >> *(*(arr + i) + j); //вказівникова форма
}
}
}
void getRandom(int** arr, int rows, int columns) { //випадкова генерація чисел
int lowest = -21, highest = 34;
int i, j;
srand(time(NULL));
// ініціалізація масива
for (i = 0; i < rows; i++) {
for (j = 0; j < columns; j++) {
arr[i][j] = lowest + rand() % (highest - lowest + 1);
cout << setw(7) << arr[i][j];
}
cout << endl;
}
}
我需要转换为一维数组的函数,这是我的主要问题:
void printSecondaryDiagonal(int** arr, int rows, int columns) {
cout << "Secondary Diagonal: ";
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
// Condition for secondary diagonal
if ((i + j) == (columns - 1)) {
cout << arr[i][j] << setw(7);
}
}
}
}
【问题讨论】:
-
“无法使用矢量”。如果您需要矢量提供的动态分配,创建一个简化版本的矢量通常是一个好的开始。