Skip to content

Instantly share code, notes, and snippets.

@pjastr
Created March 31, 2020 11:31
Show Gist options
  • Save pjastr/13c6f2daafadfa755b6a5ed302249618 to your computer and use it in GitHub Desktop.
Save pjastr/13c6f2daafadfa755b6a5ed302249618 to your computer and use it in GitHub Desktop.

Tablice jednowymiarowe

Uwaga! Zadania 1-4 nie są obowiązkowe do przesłania na Githuba.

  1. Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int *wsk;
int a[] = {1, 2, 3, 5, 7};
wsk = a;
wsk += 2;
  1. Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int a[] = {1, 4, 3, 5, 7};
int *ptr = a + 2;
int diff = ptr - a;
  1. Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int tab[] = {6, -3, 5, 18, 5, 8, 12, 44};
int *wsk;
wsk=tab + -6;
printf("%d \n", *(wsk+=6));
printf("%p \n", (wsk + 6));
printf("%p \n", &(wsk-=-2)[-2]);
printf("%d \n", (wsk+=-1)[2]);
  1. Przeanalizuj poniższy kod i znajdź wyjaśnienia dla kolejnych etapów realizacji programu:
int m = 5, n = 10, o = 0;
int *p1;
int *p2;
int *p3;
p1 = &m;
p2 = &n;
printf("p1 = %d\n", p1);
printf("p2 = %d\n", p2);
o = *p1+*p2;
printf("*p1+*p2 = %d\n", o);
p3 = p1-p2;
printf("p1 - p2 = %d\n", p3);
p1++;
printf("p1++ = %d\n", p1);
p2--;
printf("p2-- = %d\n", p2);
//printf("p1+p2 = %d\n", p1+p2);

Po analizie odkomentuj ostatnią linijkę i zastanów się czemu nie spełnia ona zasad kompilacji.

  1. Zadania ze zbioru do wykonania w trakcie bieżących ćwiczeń:

Rząd A

4.2.1 4.2.2 4.2.6
4.2.7 4.2.9 4.2.11

Rząd B

4.2.1 4.2.3 4.2.6
4.2.8 4.2.9 4.2.12

Rząd C

4.2.2 4.2.3 4.2.7
4.2.8 4.2.10 4.2.12

Pozostałe zadania nie są obowiązkowe do przesłania, choć ich rozwiązanie może być przydatne do przygotowania do kolokwium. Jeśli zostaną umieszczone w repozytorium, to zostaną sprawdzone (bez dodatkowych punktów).

Jeśli masz problem z rozwiązaniem jakiegoś polecenia, prześlij kod "początkowy" w komentarzu wpisując pytania lub informację o ew. problemach. Kod powinien spełniać zasady kompilacji. Jeśli chciałbyś poprosić o sprawdzenie polecenia przed następnymi ćwiczeniami, w repozytorium załóż issue i przypisz go do prowadzącego zajęcia.

Zadania ze znaczkiem C++ są możliwe do wykonania tylko w tym języku z wykorzystaniem konstrukcji dostępnych w C++ a niedostępnych w C. Można jednak spróbować obejść nieco problem w C (nie jest to obowiązkowe).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment