This commit is contained in:
2026-03-31 15:01:08 +02:00
parent c9945fb1d3
commit 3a5efebd4b
12 changed files with 88 additions and 1 deletions

View File

@@ -0,0 +1,10 @@
// Prześledź krok po kroku poniższy kod. Dla każdej linii zanotuj wartość ptr, *ptr
// (jeśli dostępna) oraz czy pamięć jest zaalokowana.
int *ptr = nullptr;
ptr = new int(5);
std::cout << *ptr << '\n';
*ptr = *ptr + 3;
std::cout << *ptr << '\n';
delete ptr;
ptr = nullptr;

View File

@@ -0,0 +1,2 @@
// Przepisz rozwiązanie zadania 9, używając std::unique_ptr<double[]> zamiast su
// rowego wskaźnika. Sprawdź, co musisz zmienić i co działa tak samo.

View File

@@ -0,0 +1,9 @@
// Poniższy kod zawiera kilka błędów. Wskaż każdy z nich i zaproponuj poprawkę
void funkcja() {
int *a = new int(10);
int *b = new int(20);
a = b; // (1)
delete a; // (2)
delete b; // (3)
}

View File

@@ -0,0 +1,3 @@
// Napisz program, który wczytuje od użytkownika liczbę n, alokuje tablicę n lic
// b całkowitych na stercie, wczytuje n wartości, oblicza i wypisuje ich
// sumę, a następnie poprawnie zwalnia pamięć.

View File

@@ -0,0 +1,7 @@
// Napisz funkcję o poniższej sygnaturze. Zaalokuj tablicę, wypełnij ją kole
// nymi wielokrotnościami
// wartości krok i zwróć wskaźnik. Pamiętaj, że wywołujący jest odpowiedzialny za del
// te[].
int *generujTableau(int n, int krok);
// Przykład: generujTableau(5, 3) zwraca {0, 3, 6, 9, 12}

View File

@@ -0,0 +1,11 @@
// Uzupełnij program i sprawdź zachowanie. Wyjaśnij, dlaczego wyniki mogą się różn
// ić.
void podwojWartoscia(int x) { x *= 2; }
void podwojWskaznikiem(int *p) { *p *= 2; }
int *q = new int(5);
podwojWartoscia(*q);
std::cout << *q << '\n'; // co zostanie wypisane?
podwojWskaznikiem(q);
std::cout << *q << '\n'; // co zostanie wypisane?
delete q;

View File

@@ -0,0 +1,9 @@
// Poniższy fragment ma błąd logiczny i błąd zarządzania pamięcią. Zidentyfikuj oba i n
// apisz poprawną wersję.
int *stworzTablice(int n) {
int tab[n]; // (1) — co jest nie tak?
for (int i = 0; i < n; i++)
tab[i] = i;
return tab; // (2) — co jest nie tak?
}

View File

@@ -0,0 +1,9 @@
// Przepisz poniższy kod, zastępując ręczną alokację obiektem unique_ptr.
// Upewnij się, że nie musisz pisać delete.
// Wersja z surowym wskaźnikiem:
double *wynik = new double(3.14);
std::cout << *wynik << '\n';
delete wynik;
// Twoja wersja z unique_ptr:
// ...

View File

@@ -0,0 +1,16 @@
// Prześledź poniższy kod. Przed każdym std::cout przewidź wartość use_count(), a nast
// pnie uruchom program i porównaj
#include <iostream>
#include <memory>
int main() {
auto a = std::make_shared<int>(42);
std::cout << a.use_count() << '\n'; // ?
{
auto b = a;
std::cout << a.use_count() << '\n'; // ?
auto c = a;
std::cout << a.use_count() << '\n'; // ?
}
std::cout << a.use_count() << '\n'; // ?
}

View File

@@ -0,0 +1,9 @@
// Napisz program, który:
// • pyta użytkownika o liczbę ocen n
// • dynamicznie alokuje tablicę n liczb double
// • wczytuje oceny od użytkownika
// • oblicza i wypisuje średnią, ocenę minimalną i maksymalną
// • wypisuje informację, czy student zaliczył (średnia >= 3.0)
// • poprawnie zwalnia pamięć
// Użyj funkcji pomocniczych: obliczSrednia(double* tab, int n),
// znajdzMin(double* tab, int n), znajdzMax(double* tab, int n).

View File

@@ -10,4 +10,6 @@ Postać standardowa funkcji boolowskiej może być sumacyjna lub iloczynowa, mog
Nudy gówno tralalalalalal Nudy gówno tralalalalalal
rlc sratata rlc sratata
Czas propagacji na wykresie czasu to przesunięcie zielonej linii.