Динамический массив. Удалить столбец и строку с максимальным элементом и отразить зеркально - C (СИ)
Формулировка задачи:
Здравствуйте! Помогите пожалуйста!
Динамический двумерный массив a[n,n] заполнить случайными числами. Удалить строку и столбец, содержащие максимальный элемент массив. Зеркально отобразить элементы массива относительно горизонтальной оси симметрии, а затем относительно вертикальной оси симметрии. Вывести на экран исходный и результирующий массивы. Мои наброски
Листинг программы
- #include "stdafx.h"
- #include <iostream>
- #define n 3
- int main()
- {
- int a[n][n], a2[n][n], i = 0, j = 0, value = 0, maxi, maxj;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- a[i][j] = 0 + rand() % 10;
- }
- }
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- {
- if (a[i][j] > value)
- {
- value = a[i][j];
- maxi = i;
- maxj = j;
- }
- }
- }
- /*for (i = 1; i < n; i++)
- for (j = 0; j < n; j++)
- if (a[i][j] > a[max])
- {
- max = i;
- }*/
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < n; j++)
- printf("%d ", a[i][j]);
- printf("\n");
- }
- return 0;
- }
Решение задачи: «Динамический массив. Удалить столбец и строку с максимальным элементом и отразить зеркально»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- //Динамический двумерный массив a[n,n] заполнить случайными числами.
- //Удалить строку и столбец, содержащие максимальный элемент массив.
- //Зеркально отобразить элементы массива относительно горизонтальной оси симметрии,
- //а затем относительно вертикальной оси симметрии. Вывести на экран исходный и
- //результирующий массивы.
- int main()
- {
- int n, i, j, x, r, q, max;
- int **a = NULL;
- puts("Input number:");
- scanf("%d", &n);
- a = malloc(n * sizeof(*a));
- for(i = 0; i < n; i++)
- a[i] = malloc(n * sizeof(a));
- for(i = 0; i < n; i++)
- for(j = 0; j < n; j++)
- a[i][j] = rand()%2000 - 1000;
- puts("Source array:");
- max = a[0][0];
- for(i = 0; i < n; i++){
- for(j = 0; j < n; j++){
- printf("%6d", a[i][j]);
- if(a[i][j] > max){
- max = a[i][j];
- r = i;
- q = j;
- }
- }
- printf("\n");
- }
- printf("\nMax element is a[%d][%d] = %d\n", r, q, max);
- for(i = r; i < n - 1; i++)
- a[i] = a[i + 1];
- for(i = 0; i < n - 1; i++){
- for(j = q; j < n - 1; j++){
- a[i][j] = a[i][j + 1];
- }
- }
- n--;
- a = realloc(a, n * sizeof(*a));
- for(i = 0; i < n; i++)
- a[i] = realloc(a[i], n * sizeof(a));
- for(i = 0; i < n; i++){
- for(j = 0; j < n; j++){
- printf("%6d", a[i][j]);
- }
- printf("\n");
- }
- puts("Mirror image symmetry about a horizontal axis:");
- for(i = 0, x = 1; i < n; i++, x++){
- for(j = 0; j < n; j++)
- printf("%6d", a[n - x][j]);
- printf("\n");
- }
- puts("mirror image symmetry about a vertical axis:");
- for(i = 0; i < n; i++, x++){
- for(j = 0, x = 1; j < n; j++, x++)
- printf("%6d", a[i][n - x]);
- printf("\n");
- }
- for(i = 0; i < n; i++)
- free(a[i]);
- free(a);
- return 0;
- }
Объяснение кода листинга программы
- Программа начинается с заголовка, в котором указаны необходимые библиотеки для работы с массивами и вводом-выводом.
- Далее, в функции main(), происходит запрос на ввод размера массива от пользователя.
- После успешного ввода, динамический двумерный массив инициализируется случайными числами от -1000 до 1999.
- Затем, происходит вывод исходного массива на экран.
- Следующим шагом, находится максимальное значение в массиве и его координаты (строка и столбец).
- Максимальное значение удаляется из массива, а элементы сдвигаются вверх и влево, чтобы сохранить целостность массива.
- Далее, выполняется зеркальное отражение массива относительно горизонтальной оси и вертикальной оси.
- Выводятся на экран исходный и результирующий массивы.
- В конце программы, все выделенные динамические памяти освобождаются, а функция main() возвращает 0, что означает успешное выполнение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д