Answer the question
In order to leave comments, you need to log in
How to make a copy of a structure?
There is a non-rectangular matrix. Can't make a copy of it. Can't find error in copyMatrix() function
I'm writing in C, not C++
// структура для задания строки матрицы
struct Line{
int n; // количество элементов в строке матрицы
int *a; // массив элементов
};
// структура для задания самой матрицы
struct Matrix{
int lines; // количество строк матрицы
Line *matr; // массив строк матрицы
};
int main()
{
Matrix matr = { 0, NULL }; // исходная матрица
Matrix matrT = { 0, NULL }; // копия исходной матрицы
inputMatrix(&matr); // это функция для заполнения матрицы, там мы указываем все размеры матрицы и сами элементы. Всё работает
copyMatrix(&matr, &matrT); // создаем копию. но она не создается.
outputMatrix("Source matrix", matr); // выводим исходную матрицу на экран, всё выводится
outputMatrix("Transposed matrix", matrT); // выводим скопированную матрицу на экран. Не выводится ничего кроме ""Transposed matrix"
}
void copyMatrix(Matrix *arr1, Matrix *arr2) // создание копии матрицы
{
arr2->matr = (Line *)calloc(arr1->lines, sizeof(Line));
for (int i = 0; i < arr1->lines; i++)
{
arr2->matr[i].a = (int *)malloc(arr1->matr[i].n*sizeof(int));
for (int j = 0; j < arr1->matr[i].n; j++)
arr2->matr[i].a[j] = arr1->matr[i].a[j];
}
}
Answer the question
In order to leave comments, you need to log in
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question