C/C++

Задача на С Объявить массив данных типа double размером 3 на 3.

Объявить массив данных типа double размером 3 на 3. Ввести с консоли его значения, вывести на консоль сумму его элементов, расположенных на главной диагонали и сумму элементов, расположенных на побочной диагонали.

Объявить массив данных типа int размером 2 на 2. Ввести с консоли его значения, вывести на консоль квадрат данной матрицы (перемножение матрицы самой на себя).

В программе должна быть предусмотрена возможность работы с матрицами любого размера.
Sabir Azadi
Sabir Azadi
97
#include <stdio.h>
#include <stdlib.h>

int main()
{
unsigned int N;
/* 1 */
double * * A;
do
{
printf("Введите размер матрицы: ");
scanf("%u", &N);
} while(!N);
A = (double **) malloc(N*sizeof(double*));
for(int x = 0; x < N; x++)
A[x] = (double *) malloc(N * sizeof(double));

double sum1 = 0.0, sum2 = 0.0;
for(int x = 0; x < N; x++)
for(int y = 0; y < N; y++)
{
printf("A[%d][%d]=",x,y);
scanf("%lf", &A[x][y]);
if(x == y) sum1 += A[x][y];
if(x == N - 1 - y) sum2 += A[x][y];
}

printf("Сумма элементов по главной диагонали равна %lf.\n", sum1);
printf("Сумма элементов по побочной диагонали равна %lf.\n", sum2);

if(A == (double**) NULL) return 1;
for(int x = 0; x < N; x++)
{
if(A[x] == (double*) NULL) return 1;
free(A[x]);
A[x] = (double*) NULL;
}
free(A);
A = (double**) NULL;

/* 2 */
putchar('\n');
do
{
printf("Введите размер матрицы: ");
scanf("%u", &N);
} while(!N);
int * * B;
B = (int **) malloc(N * sizeof(int*));
for(int x = 0; x < N; x++)
B[x] = (int*) malloc(N * sizeof(int));

for(int x = 0; x < N; x++)
for(int y = 0; y < N; y++)
{
printf("A[%d][%d]=",x,y);
scanf("%d", &B[x][y]);
}

putchar('\n');
for(int x = 0; x < N; x++)
{
for(int y = 0; y < N; y++)
printf("%d\t", B[x][y] * B[x][y]);
putchar('\n');
}

if(B == (int**) NULL) return 1;
for(int x = 0; x < N; x++)
{
if(B[x] == (int*) NULL) return 1;
free(B[x]);
B[x] = (int*) NULL;
}
free(B);
B = (int**) NULL;

return 0;
}
Азат Назыров
Азат Назыров
85 028
Лучший ответ
начинайте работать над заданием