Заменить элементы ниже главной диагонали на элементы выше главной диагонали - C (СИ)
Формулировка задачи:
Привет! Можете помочь в Си? Есть начало, но как именно менять может кто-то подсказать?
Дана квадратная матрица действительных чисел размером 6х6. Заменить элементы лежащие ниже главной диагонали соответствующими элементами, лежащими выше главной диагонали, умноженными на максимальный элемент всей матрицы
Листинг программы
- void form_matr (int *a, int n, int m)
- {
- int i,j;
- for (i=0;i<n;i++)
- { printf ("\n");
- for (j=0;j<m;j++)
- {
- *(a+i*m+j)=rand()%100;
- printf("%4d ",*(a+i*m+j));
- }
- }
- }
- void f1 (int *a, int n, int m, int *max)
- {
- int i,j; *max=-1000;
- for(i=0; i<n; i++)
- {
- printf("\n");
- for(j=0; j<m; j++)
- {
- if(*(a+i*m+j)>*max) *max=*(a+i*m+j);
- }
- }
- printf("max= %d ", *max);
- }
- int main()
- {
- int n=6, m=6, max, a[6][6];
- form_matr(&a[0][0], n, m);
- f1(&a[0][0], n, m, &max);
- getch();
- return 0;
- }
Решение задачи: «Заменить элементы ниже главной диагонали на элементы выше главной диагонали»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include<time.h>
- #define N 6
- #define M 6
- void form_matr(int (*a)[N],int rows);
- int max_matr(int (*a)[N],int rows);
- void change_matr(int (*a)[N],int rows,int max);
- void print_matr(int (*a)[N],int rows);
- int main(void)
- {
- int a[N][M],max;
- srand(time(NULL));
- form_matr(a,M);
- print_matr(a,M);
- max=max_matr(a,M);
- printf("max=%d\n",max);
- change_matr(a,M,max);
- print_matr(a,M);
- return 0;
- }
- void form_matr(int (*a)[N],int rows)
- {
- int i,j;
- for(i=0;i<N;i++)
- for(j=0;j<rows;j++)
- *(*(a+i)+j)=rand()%100;
- }
- int max_matr(int (*a)[N],int rows)
- {
- int max=-200,i,j;
- for(i=0;i<N;i++)
- for(j=0;j<rows;j++)
- if(*(*(a+i)+j)>max)
- max=*(*(a+i)+j);
- return max;
- }
- void change_matr(int (*a)[N],int rows,int max)
- {
- int i,j;
- for(i=0;i<N;i++)
- for(j=0;j<i;j++)
- *(*(a+i)+j)=*(*(a+j)+i)*max;
- }
- void print_matr(int (*a)[N],int rows)
- {
- int i,j;
- printf("\nMatrix:\n");
- for(i=0;i<N;i++)
- {
- for(j=0;j<rows;j++)
- printf("%5d",*(*(a+i)+j));
- printf("\n");
- }
- printf("\n");
- }
Объяснение кода листинга программы
Код представляет собой программу на языке C, которая работает с матрицей целых чисел. Список действий, выполняемых кодом:
- Создается матрица типа int, размерностью 6x6, и инициализируется случайными числами от 0 до 99.
- Находится максимальное значение в матрице.
- Заменяются элементы ниже главной диагонали на элементы выше главной диагонали, умноженные на максимальное значение.
- Выводится исходная матрица.
- Выводится матрица после замены элементов.
Подробнее о каждой функции:
form_matr
формирует начальную матрицу, заполняя ее случайными числами.max_matr
находит максимальное значение в матрице.change_matr
меняет элементы в соответствии с условиями задачи.print_matr
выводит матрицу на экран. В основной функцииmain
вызываются все эти функции в нужной последовательности.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д