Помогите доработать код для функции
Pair sum_main_side_diagonal(int** matrica, size_t n) {//нахождение суммы элементов главной и побочной диагонали
size_t j = n - 1;
size_t s = 0;
Pair pair;
pair.first = &matrica[0][0];
pair.second = &matrica[0][j];
--j;
size_t i;
for (i = 1; i < n; ++i, --j) {
s = s + matrica[i][j];
}
return pair;
}
int main(void) {
int** a = NULL;
system("chcp 1251 > nul");
size_t n = matrica_size("Введите размерность матрицы: ");
a = create_matrica(a, n, n);
if (a != NULL) {
int x, c;
unsigned q, w;
Pair mm;
x = n << 2;
fill(a, n, n, x);
w = 5;
show(a, n, n, w);
mm = sum_main_side_diagonal(a, n);
printf(" Сумма на главной диагонали: %i\n", *mm.first);
printf(" Сумма на побочной диагонали: %i\n", *mm.second);
a = destroy(a, n);
}
else {
puts("Недостаточно памяти!");
}
system("pause > nul");
return 0;
}
C/C++
Дана матрица nxn, вычислить суммы диагональных элементов( главной и побочной ) отдельно, но в одной функции на языке си.
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
typedef struct {
int first;
int second;
} Pair;
int** create(int** mx, size_t n) {
size_t i, j;
srand((unsigned)time(NULL));
mx = (int**)malloc(n * sizeof(int*));
for (i = 0; i < n; ++i) {
mx[i] = (int*)malloc(n * sizeof(int));
for (j = 0; j < n; ++j) mx[i][j] = RAND(10, 101);
}
return mx;
}
int** destroy(int** mx, size_t n) {
if (mx != NULL) {
size_t i;
for (i = 0; i < n; ++i) free(mx[i]);
free(mx);
mx = NULL;
}
return mx;
}
void show(int** mx, size_t n) {
size_t i, j;
for (i = 0; i < n; ++i) {
for (j = 0; j < n; ++j) printf("%4i", mx[i][j]);
puts("");
}
}
Pair sum(int** mx, size_t n) {
Pair pair;
pair.second = pair.first = 0;
size_t i;
for (i = 0; i < n; ++i) {
pair.first += mx[i][i];
pair.second += mx[i][n - i - 1];
}
return pair;
}
size_t length(const char* msg) {
size_t value;
printf(msg);
scanf_s("%Iu", &value);
while (getchar() != '\n');
return value;
}
int main(void) {
system("chcp 1251 > nul");
int** mx = NULL;
size_t n = length("Введите размерность матрицы: ");
mx = create(mx, n);
if (mx != NULL) {
Pair pair;
show(mx, n);
pair = sum(mx, n);
printf("Сумма элементов главной диагонали: %i\n", pair.first);
printf("Сумма элементов побочной диагонали: %i\n", pair.second);
mx = destroy(mx, n);
} else {
puts("Недостаточно памяти!");
}
system("pause > nul");
return 0;
}
#include <stdio.h>
#include <time.h>
#define RAND(min, max) (rand() % ((max) - (min)) + (min))
typedef struct {
int first;
int second;
} Pair;
int** create(int** mx, size_t n) {
size_t i, j;
srand((unsigned)time(NULL));
mx = (int**)malloc(n * sizeof(int*));
for (i = 0; i < n; ++i) {
mx[i] = (int*)malloc(n * sizeof(int));
for (j = 0; j < n; ++j) mx[i][j] = RAND(10, 101);
}
return mx;
}
int** destroy(int** mx, size_t n) {
if (mx != NULL) {
size_t i;
for (i = 0; i < n; ++i) free(mx[i]);
free(mx);
mx = NULL;
}
return mx;
}
void show(int** mx, size_t n) {
size_t i, j;
for (i = 0; i < n; ++i) {
for (j = 0; j < n; ++j) printf("%4i", mx[i][j]);
puts("");
}
}
Pair sum(int** mx, size_t n) {
Pair pair;
pair.second = pair.first = 0;
size_t i;
for (i = 0; i < n; ++i) {
pair.first += mx[i][i];
pair.second += mx[i][n - i - 1];
}
return pair;
}
size_t length(const char* msg) {
size_t value;
printf(msg);
scanf_s("%Iu", &value);
while (getchar() != '\n');
return value;
}
int main(void) {
system("chcp 1251 > nul");
int** mx = NULL;
size_t n = length("Введите размерность матрицы: ");
mx = create(mx, n);
if (mx != NULL) {
Pair pair;
show(mx, n);
pair = sum(mx, n);
printf("Сумма элементов главной диагонали: %i\n", pair.first);
printf("Сумма элементов побочной диагонали: %i\n", pair.second);
mx = destroy(mx, n);
} else {
puts("Недостаточно памяти!");
}
system("pause > nul");
return 0;
}
Похожие вопросы
- Циклические алгоритмы. «Разложение функций» на языке Си
- Код работает некорректно. Язык Си. Нахождение максимального отрицательного элемента матрицы и замена его числом.
- Составьте программу удаления столбца, содержащего максимальный элемент матрицы A[N][N] НА ЯЗЫКЕ СИ
- В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива
- Работа с матрицами. Нужно найти сумму элементов каждой строки. Помогите пожалуйста ????????
- Дан массив из N элементов (N < 1000), причем N - четное. Вставить в середину массива сумму всех элементов.
- Упорядочить элементы массива по возрастанию на языке Си
- Помогите добавить ввод чисел в массив матрицы на языке Си
- Язык Си. Сортировка и поиск элементов массива
- Вопрос по языку си. Написать функцию