Advertisement
Sawy3R11

malloc, realloc

Dec 20th, 2015
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int * stworzTablice (int *t, int rozmiar);
  5. void wypelnij(int *t, int rozmiar);
  6. void wypisz (int *t, int rozmiar);
  7. int *wczytuj_do_zera(int *t, int *rozmiar);
  8.  
  9. int main()
  10. {
  11.     int *tablica;
  12.     int rozmiar;
  13.  
  14.     scanf("%d", &rozmiar);
  15.     tablica = stworzTablice(tablica, rozmiar);
  16.     wypelnij(tablica, rozmiar);
  17.     wypisz(tablica, rozmiar);
  18.  
  19.     printf("\nWczytwanie do 0: \n");
  20.     tablica = wczytuj_do_zera(tablica, &rozmiar);
  21.     wypisz(tablica, rozmiar);
  22.  
  23.     return 0;
  24. }
  25.  
  26.  
  27. int * stworzTablice (int *t, int rozmiar)
  28. {
  29.     t = (int *) malloc(rozmiar*sizeof(int));
  30.     return t;
  31. }
  32. int *wczytuj_do_zera(int *t, int *rozmiar)
  33. {
  34.     int wczytywana;
  35.     while (1)
  36.     {
  37.         scanf("%d", &wczytywana);
  38.         if(wczytywana == 0) break;
  39.  
  40.         t = (int *) realloc(t, (*rozmiar+1)*sizeof(int));
  41.         *(t+*rozmiar) = wczytywana;
  42.     /*tablice numerowane są od 0, zatem dodając rozmiar otrzymamu adres nowo powstałej komórki
  43.     np t[3] to t[0], t[1], t[2]
  44.     czyli t+3 = t[3]                */
  45.         (*rozmiar)++;
  46.     }
  47.     return t;
  48. }
  49.  
  50. void wypelnij(int *t, int rozmiar)
  51. {
  52.     int i=0;
  53.     for(i; i<rozmiar; i++)
  54.         scanf("%d", t+i);
  55. }
  56.  
  57. void wypisz(int *t, int rozmiar)
  58. {
  59.     int i=0;
  60.     for(i; i<rozmiar; i++)
  61.         printf("\nt[%d] = %d", i, *(t+i));
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement