Не правильный подсчет элементов матрицы - C (СИ)
Формулировка задачи:
Задание:построить последовательность чисел по правилу: проверить знак элемента на главной диагонали, если элемент отрицательный, то число равно 0, если элемент положительный число равно сумме всех элементов строки, в которой он находится. У меня оно всегда подсчитывает все эелементы матрицы, подскажите в чем проблема. Заранее спасибо.
#include <stdio.h> #include <stdlib.h> int main() { double**data=NULL; int rows=0, cols=0; double a=0; int i,j,n=0; printf("Enter size of matrix:"); scanf("%d",&n); rows=n; cols=n; data=(double**)calloc(rows, sizeof(double*)); for (i=0;i<rows;i++) data[i]=(double*)calloc(cols, sizeof(double)); if (NULL!=data) { for (i=0;i<rows;i++) for (j=0;j<cols;j++) { printf("data[%d][%d]=",i,j); scanf("%lf",&data[i][j]); } } for(i=0;i<rows; i++) { printf("\n"); for(j=0;j<cols; j++) printf ("%6.0lf", data[i][j]) ; } for(i = 0; i < rows; ++i) { if(data[i][i]>=0) { for(j = 0; j < cols; ++j) { a+= data[i][j]; } } else if(data[i][i]<0) { a=0; } } printf("\n\n"); for (i = 0; i < n; i++) { printf("%.0f ", a); } free(data); return 0; }
Решение задачи: «Не правильный подсчет элементов матрицы»
textual
Листинг программы
a[n] = 0; // a[n] в в данном случае указывает на один и тот же элемент — a[2], например, если n = 2 // И если бы даже это работало — double a[n]; // , то элемент с индексом n выходит за границу данного массива, которая равна [0; n)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д