Так что в основном я пытаюсь сделать эту матрицу (с двумерным массивом) в формате
1
1 1
1 1
1 1 1
1 2 1
1 1 1
1 1 1 1
1 2 2 1
1 2 2 1
1 1 1 1
1 1 1 1 1
1 2 2 2 1
1 2 3 2 1
1 2 2 2 1
1 1 1 1 1
в зависимости от того, какой размер вводит пользователь. Я могу сделать это с помощью жесткого кода, как показано:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int userSize;
do {
cin >> userSize;
int userArray[userSize][userSize];
int size = 1;
int maxSize = 99;
for (int i = 0; i < userSize; i++) {
for (int j = 0; j < userSize; j++) {
if ((j > 2 && j < userSize - 3) &&
(i > 2 && i < userSize - 3)){
userArray[i][j] = size + 3;
}
if ((j > 1 && j < userSize - 2) &&
(i > 1 && i < userSize - 2)) {
userArray[i][j] = size + 2;
}
else if ((j > 0 && j < userSize - 1) &&
(i > 0 && i < userSize - 1)) {
userArray[i][j] = size + 1;
}
else {
userArray[i][j] = size;
}
}
}
for (int i = 0; i < userSize; i++) {
for (int j = 0; j < userSize; j++) {
cout << setw(3) << userArray[i][j];
}
cout << endl;
}
cout << endl;
}while(userSize != 0);
return 0;
}
, однако мне нужно быть в состоянии сделать это до 99, что, очевидно, будет много писать. Есть ли способ, которым я могу сделать это с некоторое время l oop вместо? Ниже моя неудачная попытка, которая выводит только мусор:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int userSize;
int maxSize = 99;
int size = 1;
do {
cin >> userSize;
int myMatrix[userSize][userSize];
for (int i = 0; i < userSize; i++) {
for (int j = 0; j < userSize; j++) {
while (maxSize >= 0) {
if ((j > maxSize) && (j < userSize - (maxSize + 1)) &&
((i > maxSize) && (i < userSize - (maxSize + 1)))) {
myMatrix[i][j] = size + maxSize;
}
/*
if ((j > 1 && j < userSize - 2) &&
(i > 1 && i < userSize - 2)) {
myMatrix[i][j] = size + 2;
}
else if ((j > 0 && j < userSize - 1) &&
(i > 0 && i < userSize - 1)) {
myMatrix[i][j] = size + 1;
}
*/
else {
myMatrix[i][j] = size;
}
maxSize = maxSize - 1;
}
}
}
for (int i = 0; i < userSize; i++) {
for (int j = 0; j < userSize; j++) {
cout << setw(3) << myMatrix[i][j];
}
cout << endl;
}
cout << endl;
}while(userSize != 0);
return 0;
}