С++
Готовый код, который делает сдвиг динамического двумерного массива, который ввел пользователь на n вправо или вниз. Должен состоять из 2х функций (1я через 2й индекс, а 2я через массив через приведенный индекс
А точнее, что нужно изменить
Перепиши мне след функцию shiftDown (можно сделать перегрузку), эту функцию сделать через одинарный индекс, для этого выделаем дополнительную память в main под эту функцию, как единый индекс, данные после сдвига вправо копируем в эту и отправь мне весь изменённый код чтобы он работал

#include
using namespace std;

void fillMatrix(int** matrix, int rows, int cols) {
cout << "Введите значения матрицы:\n";
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << "matrix[" << i << "][" << j << "] = ";
cin >> matrix[i][j];
}
}
}

void shiftRight(int** matrix, int rows, int cols, int shift) {
int** tempMatrix = new int* [rows];
for (int i = 0; i < rows; i++) {
tempMatrix[i] = new int[cols];
for (int j = 0; j < cols; j++) {
tempMatrix[i][j] = matrix[i][j];
}
}

for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
int shiftedCol = (j + shift) % cols;
matrix[i][shiftedCol] = tempMatrix[i][j];
}
}

for (int i = 0; i < rows; i++) {
delete[] tempMatrix[i];
}
delete[] tempMatrix;
}

void shiftDown(int** matrix, int rows, int cols, int shift) {
int** tempMatrix = new int* [rows];
for (int i = 0; i < rows; i++) {
tempMatrix[i] = new int[cols];
for (int j = 0; j < cols; j++) {
tempMatrix[i][j] = matrix[i][j];
}
}

for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
int shiftedRow = (i + shift) % rows;
matrix[shiftedRow][j] = tempMatrix[i][j];
}
}

for (int i = 0; i < rows; i++) {
delete[] tempMatrix[i];
}
delete[] tempMatrix;
}

void printMatrix(int** matrix, int rows, int cols) {
cout << "Матрица:\n";
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << matrix[i][j] << " ";
}
cout << endl;
}
}

int main() {

setlocale(LC_ALL, "Rus");
int rows, cols, shiftRightVal, shiftDownVal;
cout << "Введите количество строк матрицы: ";
cin >> rows;
cout << "Введите количество столбцов матрицы: ";
cin >> cols;

int** matrix = new int* [rows];
for (int i = 0; i < rows; i++) {
matrix[i] = new int[cols];
}

fillMatrix(matrix, rows, cols);
printMatrix(matrix, rows, cols);
cout << "Введите количество столбцов, на которое нужно сдвинуть матрицу вправо: ";
cin >> shiftRightVal;
shiftRight(matrix, rows, cols, shiftRightVal);
printMatrix(matrix, rows, cols);

cout << "Введите количество строк, на которое нужно сдвинуть матрицу вниз: ";
cin >> shiftDownVal;
shiftDown(matrix, rows, cols, shiftDownVal);
printMatrix(matrix, rows, cols);

cout << "Введите дополнительное количество строк, на которое нужно сдвинуть матрицу вниз: ";
cin >> shiftDownVal;
shiftDown(matrix, rows, cols, shiftDownVal);
printMatrix(matrix, rows, cols);

for (int i = 0; i < rows; i++) {
delete[] matrix[i];
}
delete[] matrix;


}
Please enter comments
Please enter your name.
Please enter the correct email address.
You must agree before submitting.

Answers & Comments


Copyright © 2024 SCHOLAR.TIPS - All rights reserved.