Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <malloc.h>
- #define N 5
- typedef struct tablica
- {
- int rozmiar;
- int *tab;
- }tablica;
- int przepisz(int t[N][N], int p, tablica tabl)
- {
- int i;
- if (p < 1 - N || p > N - 1)
- {
- printf("Podana przekatna wychodz poza tablice\n");
- return 0;
- }
- if (p >= 0)
- {
- tabl.rozmiar = N - p;
- tabl.tab = (int *)(tabl.tab, tabl.rozmiar * sizeof(int));
- if (tabl.tab == NULL)
- return 0;
- for (i = 0; i < tabl.rozmiar; i++)
- (tabl.tab)[i] = t[i][i + p];
- }
- else
- {
- tabl.rozmiar = N + p;
- tabl.tab = (int *)(tabl.tab, tabl.rozmiar * sizeof(int));
- if (tabl.tab == NULL)
- return 0;
- for (i = 0; i < tabl.rozmiar; i++)
- {
- printf("bum8\n");
- printf("%d\n", t[i - p][i]);
- //TUTAJ SIE WYSYPUJE
- (tabl.tab)[i] = t[i - p][i];
- printf("%d\n", (tabl.tab[i]));
- printf("bum9");
- }
- printf("bum5");
- }
- for (i = 0; i < tabl.rozmiar; i++)
- {
- printf("bum6");
- printf("%d ", (tabl.tab)[i]);
- }
- return 1;
- }
- int main()
- {
- /*Napisz funkcję, która ze statycznej tablicy 2-wymiarowej o wymiarze NxN ( N-stała ) przepisze do dynamicznej tablicy 1-wymiarowej
- elementy przekątnej o podanym numerze p, np. dla tablicy o wymiarze N=5 dla p= -2
- otrzymamy tablicę 3-elementową
- Funkcja posiada 3 parametry: wejściowa tablica 2-wymiarowa (do funkcji przekazujemy już wypełnioną) numer przekątnej
- zwracana struktura ( reprezentującą wybraną przekątną ), której polami są: wskaźnik 1-wymiarowej tablicy dynamicznej
- ( wypełniony elementami przekątnej ) oraz jej rozmiar ( równy liczbie elementów przekątnej ). Należy zadbać o odpowiedni przydział pamięci dla tablicy dynamicznej.
- Funkcja zwraca 1, gdy zwracana struktura jest wypełniona poprawnie, a w przypadku błędu zwraca 0
- (np. gdy numer przekątnej był niepoprawny lub nie udało się przydzielić pamięci)
- Napisz przykładowe wywołanie tej funkcji wraz z niezbędnymi deklaracjami typów i zmiennych
- ( przed wywołaniem funkcji, możesz założyć, że tablica będzie już wypełniona danymi ).
- */
- int t[N][N];
- int i, j, p = -2;
- tablica tabl;
- tabl.tab = (int *)malloc(sizeof(int));
- for (i = 0; i < N; i++)
- for (j = 0; j < N; j++)
- t[i][j] = i * j + 1;
- przepisz(t, p, tabl);
- printf("bum");
- printf("\n");
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement