Создать функцию возвращаемым значением которой является квадратная матрица - C (СИ)
Формулировка задачи:
Помогите, сижу на зачете, хз в чем ошибка
создать функцию возвращаемым значением которой является квадратная матрица размером 5 а значения элементов равны сумме соотв. индексов.
С помощью этой функции создать и напечатать матрицу
#include <stdio.h>
#include <stdlib.h>
int i=0,j=0,a=0,n=5;
int mas[n,n];
void fun(int nn)
{
for (i=1;i<=n;i++)
for (j=1;j<=n;j++)
mas[i,j]=i+j;
return *mas;
}
main()
{
scanf("%d",&n);
fun(n);
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++) printf ("%d",mas[i,j]);
printf("\n");
}
system ("pause");
}Решение задачи: «Создать функцию возвращаемым значением которой является квадратная матрица»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
enum { N = 5 };
int* func(unsigned n) {
int* mx = (int*)malloc(n * n * sizeof(int));
unsigned i, j;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
mx[i * n + j] = i + j;
return mx;
}
int main() {
int* mx = func(N);
unsigned i, j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
printf("%d ", mx[i * N + j]);
putchar('\n');
}
free(mx);
}
Объяснение кода листинга программы
В данном коде создана функция с именем func, которая принимает целочисленный аргумент n и возвращает указатель на массив целых чисел. Внутри функции происходит выделение памяти под массив n*n целых чисел с помощью malloc. Затем происходит заполнение этого массива значениями, равными сумме соответствующих индексов i и j. Функция возвращает указатель на выделенный массив. В функции main создаётся вызов функции func с аргументом N, после чего происходит вывод значений массива на экран с помощью цикла for и функции printf. Затем вызывается функция free для освобождения выделенной памяти.