Заменить элементы ниже главной диагонали на элементы выше главной диагонали - C (СИ)

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

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

Привет! Можете помочь в Си? Есть начало, но как именно менять может кто-то подсказать? Дана квадратная матрица действительных чисел размером 6х6. Заменить элементы лежащие ниже главной диагонали соответствующими элементами, лежащими выше главной диагонали, умноженными на максимальный элемент всей матрицы
Листинг программы
  1. void form_matr (int *a, int n, int m)
  2. {
  3. int i,j;
  4. for (i=0;i<n;i++)
  5. { printf ("\n");
  6. for (j=0;j<m;j++)
  7. {
  8. *(a+i*m+j)=rand()%100;
  9. printf("%4d ",*(a+i*m+j));
  10. }
  11. }
  12. }
  13. void f1 (int *a, int n, int m, int *max)
  14. {
  15. int i,j; *max=-1000;
  16. for(i=0; i<n; i++)
  17. {
  18. printf("\n");
  19. for(j=0; j<m; j++)
  20. {
  21. if(*(a+i*m+j)>*max) *max=*(a+i*m+j);
  22. }
  23. }
  24. printf("max= %d ", *max);
  25. }
  26. int main()
  27. {
  28. int n=6, m=6, max, a[6][6];
  29. form_matr(&a[0][0], n, m);
  30. f1(&a[0][0], n, m, &max);
  31. getch();
  32. return 0;
  33. }

Решение задачи: «Заменить элементы ниже главной диагонали на элементы выше главной диагонали»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include<time.h>
  4. #define N 6
  5. #define M 6
  6. void form_matr(int (*a)[N],int rows);
  7. int max_matr(int (*a)[N],int rows);
  8. void change_matr(int (*a)[N],int rows,int max);
  9. void print_matr(int (*a)[N],int rows);
  10. int main(void)
  11. {
  12.     int a[N][M],max;
  13.     srand(time(NULL));
  14.     form_matr(a,M);
  15.     print_matr(a,M);
  16.     max=max_matr(a,M);
  17.     printf("max=%d\n",max);
  18.     change_matr(a,M,max);
  19.     print_matr(a,M);
  20.     return 0;
  21. }
  22. void form_matr(int (*a)[N],int rows)
  23. {
  24.     int i,j;
  25.     for(i=0;i<N;i++)
  26.         for(j=0;j<rows;j++)
  27.             *(*(a+i)+j)=rand()%100;
  28. }
  29. int max_matr(int (*a)[N],int rows)
  30. {
  31.     int max=-200,i,j;
  32.     for(i=0;i<N;i++)
  33.         for(j=0;j<rows;j++)
  34.             if(*(*(a+i)+j)>max)
  35.                 max=*(*(a+i)+j);
  36.     return max;
  37.    
  38. }
  39. void change_matr(int (*a)[N],int rows,int max)
  40. {
  41.     int i,j;
  42.     for(i=0;i<N;i++)
  43.         for(j=0;j<i;j++)
  44.             *(*(a+i)+j)=*(*(a+j)+i)*max;
  45.  
  46.    
  47. }
  48. void print_matr(int (*a)[N],int rows)
  49. {
  50.     int i,j;
  51.     printf("\nMatrix:\n");
  52.     for(i=0;i<N;i++)
  53.     {
  54.         for(j=0;j<rows;j++)
  55.             printf("%5d",*(*(a+i)+j));
  56.         printf("\n");
  57.     }
  58.     printf("\n");
  59. }

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

Код представляет собой программу на языке C, которая работает с матрицей целых чисел. Список действий, выполняемых кодом:

  1. Создается матрица типа int, размерностью 6x6, и инициализируется случайными числами от 0 до 99.
  2. Находится максимальное значение в матрице.
  3. Заменяются элементы ниже главной диагонали на элементы выше главной диагонали, умноженные на максимальное значение.
  4. Выводится исходная матрица.
  5. Выводится матрица после замены элементов. Подробнее о каждой функции:
    • form_matr формирует начальную матрицу, заполняя ее случайными числами.
    • max_matr находит максимальное значение в матрице.
    • change_matr меняет элементы в соответствии с условиями задачи.
    • print_matr выводит матрицу на экран. В основной функции main вызываются все эти функции в нужной последовательности.

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


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

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

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

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

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

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