Мне нужно выполнить это упражнение:
Выполнить приложение на C, которое управляет матрицей целых чисел с именем «M» и списком целых чисел с именем «L».M - квадратная матрица [nxn], где n выбирается пользователем динамически.Затем выполните эту функцию:
- Сериализация: с учетом матрицы "M" она возвращает список L с n ^ 2 элементами.Элементами списка являются элементы M, упорядоченные по строке от первого ко второму.
Вторая функция:
- Десериализация: задан список L с n^ 2 элемента, он возвращает матрицу [nxn] с элементами L, упорядоченными по столбцу.
Итак main()
должно быть:
- Пользователь задает размер матрицы(n) и заполните матрицу некоторым целым числом.
- Затем вызовите функцию сериализации, напечатайте сериализованный список
- , добавьте значение 5 к каждому значению списка
- и вызовите десериализацию.функцию
- и распечатать матрицу, заданную последней функцией.
( Все распределение должно быть динамическим. )
Я пробовал это:
#include <stdio.h>
#include <stdlib.h>
int main(){
int n,i,j;
printf("Give the dimension of matrix [nxn]: ");
scanf("%d",&n);
int **M;
M = (int**)malloc(n*sizeof(int*));
for(i=0;i<n;i++){
M[i] = (int*)malloc(n*sizeof(int*));
}
int *L = serialize(M,n);
int size = n*n;
for(i=0;i<size;i++){
printf("L[%d]= %d",i,L[i]);
}
for(i=0;i<size;i++){
L[i] = L[i]+5;
}
int **M2 = deserialize(L,n);
for(i=0;i<n;i++){
printf("\n");
for(j=0;j<n;j++){
printf("%d",M2[i][j]);
}
}
free(M);
free(M2);
free(L);
}
int serialize(int** M,int n){
int *L;
int i,j;
int size = n*n;
L = (int*)malloc(size*sizeof(int));
for(i =0;i<size;i++)
L[i]=M[i/size][(int)i%size];
return L;
}
int deserialize(int* L,int n){
int** M;
int i,j;
M = (int**)malloc(n*sizeof(int*));
for(i=0;i<n;i++){
M[i] = (int*)malloc(n*sizeof(int*));
}
int size = n*n;
for(i=0;i<size;i++)
M[i/size][i%size]=L[i];
return **M;
}
Компилятор выдаст мне ошибки:
Esercizio.c: In function ‘main’:
Esercizio.c:22: warning: initialization makes pointer from integer without a cast
Esercizio.c:31: warning: initialization makes pointer from integer without a cast
Esercizio.c: At top level:
Esercizio.c:43: error: conflicting types for ‘serialize’
Esercizio.c:22: error: previous implicit declaration of ‘serialize’ was here
Что я могу сделать?