М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
Vceohenploxo
Vceohenploxo
15.03.2020 11:08 •  Информатика

Дана целочисленная матрица размера mn. Найти матрицу, получающуюся перестановкой столбцов (первого с последним, второго с предпоследним и т.д.). 1. Составить схему программы и программу для решения задачи в соответствии с вариантом задания в соответствии с вариантом задания. Указатели не использовать.
2. Составить схему программы и программу для решения задачи в соответствии с вариантом задания. Использовать указатели.

👇
Ответ:
Iana2010
Iana2010
15.03.2020
Хорошо, для решения данной задачи воспользуемся следующим алгоритмом:

1. Считываем значения переменных m и n, которые определяют размерность матрицы.
2. Создаем двумерный массив, представляющий матрицу с размером mn, и считываем значения элементов матрицы.
3. Создаем еще один двумерный массив, который будет являться результатом перестановки столбцов, и заполняем его нулями с размером mn.
4. Используя цикл for, мы будем проходить по всем столбцам и копировать значения из исходной матрицы в результат, меняя столбцы местами по условию задачи (первый с последним, второй с предпоследним и т.д.).
5. Выводим полученную матрицу после перестановки столбцов.

Рассмотрим решение данной задачи без использования указателей:

```c++
#include
using namespace std;

int main() {
int m, n;
cout << "Введите количество строк m: ";
cin >> m;
cout << "Введите количество столбцов n: ";
cin >> n;

int matrix[m][n];

cout << "Введите элементы матрицы:" << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}

int result[m][n];

for (int j = 0; j < n; j++) {
for (int i = 0; i < m; i++) {
result[i][j] = matrix[i][n - 1 - j];
}
}

cout << "Матрица после перестановки столбцов:" << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << result[i][j] << " ";
}
cout << endl;
}

return 0;
}
```

Теперь рассмотрим решение с использованием указателей. В данном случае мы используем указатели для работы с массивами:

```c++
#include
using namespace std;

int main() {
int m, n;
cout << "Введите количество строк m: ";
cin >> m;
cout << "Введите количество столбцов n: ";
cin >> n;

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

cout << "Введите элементы матрицы:" << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cin >> matrix[i][j];
}
}

int** result = new int*[m];
for (int i = 0; i < m; i++) {
result[i] = new int[n];
}

for (int j = 0; j < n; j++) {
for (int i = 0; i < m; i++) {
result[i][j] = matrix[i][n - 1 - j];
}
}

cout << "Матрица после перестановки столбцов:" << endl;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << result[i][j] << " ";
}
cout << endl;
}

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

return 0;
}
```

В обоих решениях, нам необходимо вводить количество строк и столбцов с помощью cout и cin, чтобы определить размерность матрицы. Затем мы используем циклы for для ввода элементов матрицы, а затем второй цикл for для перестановки столбцов. После этого мы выводим полученную матрицу с помощью цикла for и cout.

Оба решения получают матрицу после перестановки столбцов, однако второе решение использует указатели для работы с памятью и динамическим выделением пространства для матрицы и результата. Это может быть полезно, если размер матрицы неизвестен заранее или может быть изменен во время выполнения программы.
4,8(44 оценок)
Проверить ответ в нейросети
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ