• С++ Готовый код, который делает сдвиг динамического двумерного массива, который ввел пользователь на 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; }

Ответы 1

  • Ответ:

    С++

    Готовый код, который делает сдвиг динамического двумерного массива, который ввел пользователь на 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;

    }

    Объяснение:

  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years