Мне нужно написать супер простой код на с++, без лишних библиотек по типу vector итд. Максимум swap и использовать только обычные циклы, переменные, и условия через if. Код должен Шляхом перестановки елементів квадратної дійсної матриці добитися того, щоб її максимальний елемент знаходився в лівому верхньому кутку (позиція (1,1)), наступний по величині елемент матриці (або співпадаючий з тим, який вже знаходиться в позиції (1,1)) – в позиції (2,2), наступний по величині (або співпадаючий з тим, який вже знаходиться в позиції (2,2)) – в позиції (3,3) і т.д., заповнивши таким чином всю головну діагональ.
Ответы
Ответ:
#include <iostream>
using namespace std;
void swap(float &a, float &b) {
float temp = a;
a = b;
b = temp;
}
int main() {
int n;
cout << "Введіть розмір матриці: ";
cin >> n;
float matrix[n][n];
cout << "Введіть елементи матриці:\n";
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}
for(int k = 0; k < n; k++) {
int max_i = k, max_j = k;
for(int i = k; i < n; i++) {
for(int j = k; j < n; j++) {
if(matrix[i][j] > matrix[max_i][max_j]) {
max_i = i;
max_j = j;
}
}
}
swap(matrix[k][k], matrix[max_i][max_j]);
}
cout << "Матриця після перестановки:\n";
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cout << matrix[i][j] << " ";
}
cout << "\n";
}
return 0;
}