Динамический массив. Удалить столбец и строку с максимальным элементом и отразить зеркально - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите пожалуйста!

Динамический двумерный массив a[n,n] заполнить случайными числами. Удалить строку и столбец, содержащие максимальный элемент массив. Зеркально отобразить элементы массива относительно горизонтальной оси симметрии, а затем относительно вертикальной оси симметрии. Вывести на экран исходный и результирующий массивы. Мои наброски
Листинг программы
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #define n 3
  4. int main()
  5. {
  6. int a[n][n], a2[n][n], i = 0, j = 0, value = 0, maxi, maxj;
  7. for (i = 0; i < n; i++)
  8. {
  9. for (j = 0; j < n; j++)
  10. {
  11. a[i][j] = 0 + rand() % 10;
  12. }
  13. }
  14. for (int i = 0; i < n; i++)
  15. {
  16. for (int j = 0; j < n; j++)
  17. {
  18. if (a[i][j] > value)
  19. {
  20. value = a[i][j];
  21. maxi = i;
  22. maxj = j;
  23. }
  24. }
  25. }
  26. /*for (i = 1; i < n; i++)
  27. for (j = 0; j < n; j++)
  28. if (a[i][j] > a[max])
  29. {
  30. max = i;
  31. }*/
  32. for (int i = 0; i < n; i++)
  33. {
  34. for (int j = 0; j < n; j++)
  35. printf("%d ", a[i][j]);
  36. printf("\n");
  37. }
  38. return 0;
  39. }

Решение задачи: «Динамический массив. Удалить столбец и строку с максимальным элементом и отразить зеркально»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //Динамический двумерный массив a[n,n] заполнить случайными числами.
  4. //Удалить строку и столбец, содержащие максимальный элемент массив.
  5. //Зеркально отобразить элементы массива относительно горизонтальной оси симметрии,
  6. //а затем относительно вертикальной оси симметрии. Вывести на экран исходный и
  7. //результирующий массивы.
  8. int main()
  9. {
  10.     int n, i, j, x, r, q, max;
  11.     int **a = NULL;
  12.     puts("Input number:");
  13.     scanf("%d", &n);
  14.     a = malloc(n * sizeof(*a));
  15.     for(i = 0; i < n; i++)
  16.         a[i] = malloc(n * sizeof(a));
  17.     for(i = 0; i < n; i++)
  18.         for(j = 0; j < n; j++)
  19.             a[i][j] = rand()%2000 - 1000;
  20.     puts("Source array:");
  21.     max = a[0][0];
  22.     for(i = 0; i < n; i++){
  23.         for(j = 0; j < n; j++){
  24.             printf("%6d", a[i][j]);
  25.             if(a[i][j] > max){
  26.                 max = a[i][j];
  27.                 r = i;
  28.                 q = j;
  29.             }
  30.         }
  31.         printf("\n");
  32.     }
  33.     printf("\nMax element is a[%d][%d] = %d\n", r, q, max);
  34.     for(i = r; i < n - 1; i++)
  35.         a[i] = a[i + 1];
  36.     for(i = 0; i < n - 1; i++){
  37.         for(j = q; j < n - 1; j++){
  38.             a[i][j] = a[i][j + 1];
  39.         }
  40.     }
  41.     n--;
  42.     a = realloc(a, n * sizeof(*a));
  43.     for(i = 0; i < n; i++)
  44.         a[i] = realloc(a[i], n * sizeof(a));
  45.     for(i = 0; i < n; i++){
  46.         for(j = 0; j < n; j++){
  47.             printf("%6d", a[i][j]);
  48.         }
  49.         printf("\n");
  50.     }
  51.  
  52.     puts("Mirror image symmetry about a horizontal axis:");
  53.     for(i = 0, x = 1; i < n; i++, x++){
  54.         for(j = 0; j < n; j++)
  55.             printf("%6d", a[n - x][j]);
  56.         printf("\n");
  57.     }
  58.     puts("mirror image symmetry about a vertical axis:");
  59.     for(i = 0; i < n; i++, x++){
  60.         for(j = 0, x = 1; j < n; j++, x++)
  61.             printf("%6d", a[i][n - x]);
  62.         printf("\n");
  63.     }
  64.     for(i = 0; i < n; i++)
  65.         free(a[i]);
  66.     free(a);
  67.     return 0;
  68. }

Объяснение кода листинга программы

  1. Программа начинается с заголовка, в котором указаны необходимые библиотеки для работы с массивами и вводом-выводом.
  2. Далее, в функции main(), происходит запрос на ввод размера массива от пользователя.
  3. После успешного ввода, динамический двумерный массив инициализируется случайными числами от -1000 до 1999.
  4. Затем, происходит вывод исходного массива на экран.
  5. Следующим шагом, находится максимальное значение в массиве и его координаты (строка и столбец).
  6. Максимальное значение удаляется из массива, а элементы сдвигаются вверх и влево, чтобы сохранить целостность массива.
  7. Далее, выполняется зеркальное отражение массива относительно горизонтальной оси и вертикальной оси.
  8. Выводятся на экран исходный и результирующий массивы.
  9. В конце программы, все выделенные динамические памяти освобождаются, а функция main() возвращает 0, что означает успешное выполнение программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы