Обнулить все элементы в строке после главной диагонали матрицы - C (СИ)
Формулировка задачи:
Дана действительная матрица квадратная матрица порядка n. Обнулить все элементы в строке после главной диагонали, если элемент на главной диагонали в этой строке положительный. Для обнуления элементов использовать подпрограмму
#include <stdio.h>
#include <malloc.h>
void main (void)
{
int n, i, j;
printf ("input size matrix n= ");
scanf ("%d", &n);
int **A=(int**)malloc(n*sizeof(int*));
for (i=0; i<n; i++)
{
A[i] = (int*) malloc (n*sizeof(int));
for (j=0; j<n; j++)
{
printf ("A [%f][%f]= ", i,j);
scanf ("%f", &A[i][j]);
}
????
}Решение задачи: «Обнулить все элементы в строке после главной диагонали матрицы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
void obnulalka (int **a,int n,int i) {
int j;
for (j=i+1; j<n; j++) a[i][j]=0;
}
void main (void)
{
int n, i, j;
printf ("input size matrix n= ");
scanf ("%d", &n);
int **A=(int**)malloc(n*sizeof(int*));
for (i=0; i<n; i++)
{
A[i] = (int*) malloc (n*sizeof(int));
for (j=0; j<n; j++)
{
printf ("A [%d][%d]= ", i+1,j+1);
scanf ("%d", &A[i][j]);
}
}
for (i=0; i<n; i++) if (A[i][i]>0) {
obnulalka (A,n,i);
}
printf ("\nResult");
for (i=0; i<n; i++) {
printf ("\n");
for (j=0; j<n; j++) printf ("%d ",A[i][j]);
}
system ("pause");
}
Объяснение кода листинга программы
В этом коде представлен алгоритм обнуления всех элементов в строке после главной диагонали матрицы. Вот список действий, которые выполняются в коде:
- Ввод размера матрицы. Пользователю предлагается ввести размер матрицы (строку и столбец).
- Выделение памяти под матрицу. Вектор динамически выделяется в памяти подмассивами, а затем объединяется в матрицу.
- Заполнение матрицы. Пользователю предлагается ввести все элементы матрицы.
- Проверка главной диагонали. Если главный элемент диагонали положительный, то выполняется обнуление.
- Обнуление элементов после главной диагонали. Функция obnulalka() обнуляет все элементы в строке после главной диагонали.
- Вывод результата. Результат выводится на экран.