В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
kokbhj
kokbhj
09.04.2020 12:21 •  Информатика

Создать квадратную матрицу размера 8 на 8. Матрица заполняется случайными целыми числами в диапазоне от 1 до 100. На матрицу накладывается разметка, соответствующая шахматной доске. Пользователь выбирает на мат- рице диагональ, задавая координаты двух клеток (ее начала и конца). Например, А5-Е1. Требуется упорядочить элементы матрицы, принадлежащие заданной диагонали, а остальные элементы обнулить. Результаты преобразований вывести на экран.

Написать в консольном приложении C++

Показать ответ
Ответ:
vitalina05062005
vitalina05062005
23.12.2023 01:11
Хорошо, вот подробное решение задачи:

Для начала, нам понадобится библиотека ``, чтобы работать с вводом и выводом данных, и ``, чтобы генерировать случайные числа. Добавьте следующие строки кода в начало программы:

```cpp
#include
#include
```

Затем создадим функцию `printMatrix`, которая будет выводить матрицу на экран. Функция получает двумерный массив и размер матрицы в качестве аргументов. Вот его реализация:

```cpp
void printMatrix(int matrix[][8]) {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
std::cout << matrix[i][j] << "\t";
}
std::cout << std::endl;
}
}
```

Далее создадим функцию `fillMatrix`, которая будет заполнять матрицу случайными целыми числами в заданном диапазоне. Функция получает двумерный массив и размер матрицы в качестве аргументов. Вот его реализация:

```cpp
void fillMatrix(int matrix[][8]) {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
matrix[i][j] = rand() % 100 + 1; // генерируем случайное число от 1 до 100
}
}
}
```

Теперь создадим функцию `orderDiagonal`, которая будет упорядочивать элементы матрицы, принадлежащие заданной диагонали, и обнулять остальные элементы. Функция получает двумерный массив, размер матрицы и координаты начала и конца диагонали в качестве аргументов. Вот его реализация:

```cpp
void orderDiagonal(int matrix[][8], int startRow, int startCol, int endRow, int endCol) {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
if ((i - j >= startRow - startCol) && (i - j <= endRow - endCol)) { // проверяем, принадлежит ли элемент диагонали
// упорядочиваем элементы диагонали по возрастанию
for (int k = i + 1; k < 8; k++) {
for (int l = j + 1; l < 8; l++) {
if ((k - l >= startRow - startCol) && (k - l <= endRow - endCol)) { // проверяем, принадлежит ли элемент диагонали
if (matrix[i][j] > matrix[k][l]) {
// меняем элементы местами
int temp = matrix[i][j];
matrix[i][j] = matrix[k][l];
matrix[k][l] = temp;
}
}
}
}
} else {
matrix[i][j] = 0; // обнуляем остальные элементы
}
}
}
}
```

Теперь создадим функцию `main`, в которой мы будем вызывать описанные выше функции и выводить результат на экран. Вот его реализация:

```cpp
int main() {
int matrix[8][8]; // объявляем матрицу размером 8x8

fillMatrix(matrix); // заполняем матрицу случайными числами
std::cout << "Исходная матрица:" << std::endl;
printMatrix(matrix); // выводим исходную матрицу на экран

std::cout << std::endl << "Введите координаты начала диагонали (например, A5): ";
int startRow, startCol;
char colChar;
std::cin >> colChar >> startRow;
startCol = colChar - 'A'; // переводим букву столбца в число

std::cout << "Введите координаты конца диагонали (например, E1): ";
int endRow, endCol;
std::cin >> colChar >> endRow;
endCol = colChar - 'A'; // переводим букву столбца в число

orderDiagonal(matrix, startRow - 1, startCol, endRow - 1, endCol); // упорядочиваем элементы матрицы

std::cout << std::endl << "Результат:" << std::endl;
printMatrix(matrix); // выводим результат на экран

return 0;
}
```

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

Надеюсь, это решение понятно и поможет вам в выполнении задачи! Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота