Advertisement
Guest User

buuu

a guest
Jan 18th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <malloc.h>
  3.  
  4. #define N 5
  5.  
  6. typedef struct tablica
  7. {
  8. int rozmiar;
  9. int *tab;
  10. }tablica;
  11.  
  12. int przepisz(int t[N][N], int p, tablica tabl)
  13. {
  14. int i;
  15. if (p < 1 - N || p > N - 1)
  16. {
  17. printf("Podana przekatna wychodz poza tablice\n");
  18. return 0;
  19. }
  20.  
  21. if (p >= 0)
  22. {
  23. tabl.rozmiar = N - p;
  24. tabl.tab = (int *)(tabl.tab, tabl.rozmiar * sizeof(int));
  25. if (tabl.tab == NULL)
  26. return 0;
  27. for (i = 0; i < tabl.rozmiar; i++)
  28. (tabl.tab)[i] = t[i][i + p];
  29. }
  30. else
  31. {
  32. tabl.rozmiar = N + p;
  33. tabl.tab = (int *)(tabl.tab, tabl.rozmiar * sizeof(int));
  34. if (tabl.tab == NULL)
  35. return 0;
  36. for (i = 0; i < tabl.rozmiar; i++)
  37. {
  38. printf("bum8\n");
  39. printf("%d\n", t[i - p][i]);
  40. //TUTAJ SIE WYSYPUJE
  41. (tabl.tab)[i] = t[i - p][i];
  42. printf("%d\n", (tabl.tab[i]));
  43. printf("bum9");
  44. }
  45. printf("bum5");
  46.  
  47. }
  48. for (i = 0; i < tabl.rozmiar; i++)
  49. {
  50. printf("bum6");
  51.  
  52. printf("%d ", (tabl.tab)[i]);
  53. }
  54. return 1;
  55. }
  56.  
  57. int main()
  58. {
  59. /*Napisz funkcję, która ze statycznej tablicy 2-wymiarowej o wymiarze NxN ( N-stała ) przepisze do dynamicznej tablicy 1-wymiarowej
  60. elementy przekątnej o podanym numerze p, np. dla tablicy o wymiarze N=5 dla p= -2
  61.  
  62. otrzymamy tablicę 3-elementową
  63.  
  64. Funkcja posiada 3 parametry:  wejściowa tablica 2-wymiarowa (do funkcji przekazujemy już wypełnioną)  numer przekątnej 
  65. zwracana struktura ( reprezentującą wybraną przekątną ), której polami są: wskaźnik 1-wymiarowej tablicy dynamicznej
  66. ( 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.
  67.  
  68. Funkcja zwraca 1, gdy zwracana struktura jest wypełniona poprawnie, a w przypadku błędu zwraca 0
  69. (np. gdy numer przekątnej był niepoprawny lub nie udało się przydzielić pamięci)
  70. Napisz przykładowe wywołanie tej funkcji wraz z niezbędnymi deklaracjami typów i zmiennych
  71. ( przed wywołaniem funkcji, możesz założyć, że tablica będzie już wypełniona danymi ).
  72. */
  73. int t[N][N];
  74. int i, j, p = -2;
  75. tablica tabl;
  76. tabl.tab = (int *)malloc(sizeof(int));
  77. for (i = 0; i < N; i++)
  78. for (j = 0; j < N; j++)
  79. t[i][j] = i * j + 1;
  80.  
  81. przepisz(t, p, tabl);
  82. printf("bum");
  83.  
  84. printf("\n");
  85. getchar();
  86. return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement