diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad1.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad1.cpp index 07b88e0..4d3c6d2 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab5/zad1.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad1.cpp @@ -1,10 +1,15 @@ // 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; +#include + +int main() { + int *ptr = nullptr; // deklarujemy wskaźnik wskazujący na nic + ptr = new int(5); // wskaźnik wskazuje teraz na wartość 5. jest ona za + // lokowana na stercie + std::cout << *ptr << '\n'; // wyświetla 5 + *ptr = *ptr + 3; // zwiększamy wartość o 3 + std::cout << *ptr << '\n'; // wyświetla 8 + delete ptr; // usuwa liczbę na którą wskazuje wskaźnik + ptr = nullptr; // wskaźnik teraz na nic nie wskazuje +} diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad2.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad2.cpp index f09f992..982ef99 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab5/zad2.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad2.cpp @@ -1,9 +1,21 @@ // 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) + int *a = new int( + 10); // do wskaźnika a przypisujemy wartość 10 zaalokowaną na stercie + int *b = new int( + 20); // do wskaźnika b przypisujemy wartość 20 zaalokowaną na stercie + // a = b; // (1) // do wskaźnika a przypisujemy adres wskaźnika b + // teraz oba wskaźniki wskazują na 20. + + // delete a; // (2) // usuwa wartość 20 ze sterty + // delete b; // (3) // usuwa wartość 20 ze sterty + + // poprawa: zamiast przypisywać adresy przypiszmy wartości na które wskazują! + *a = *b; + delete a; + delete b; + // dodatkowo pokażmy że nie wskazują teraz na nic + a = nullptr; + b = nullptr; } diff --git a/uczelnia/2_semestr/programowanie/laby/lab5/zad3.cpp b/uczelnia/2_semestr/programowanie/laby/lab5/zad3.cpp index 7b647bc..e0eb5c1 100644 --- a/uczelnia/2_semestr/programowanie/laby/lab5/zad3.cpp +++ b/uczelnia/2_semestr/programowanie/laby/lab5/zad3.cpp @@ -1,3 +1,29 @@ // 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ęć. + +#include + +int sumuj(int *arr, int n) { + int sum = 0; + for (int i = 0; i < n; i++) { + sum += *(arr + i); + } + return sum; +} + +int main() { + int n; + std::cout << "Podaj rozmiar tablicy: "; + int *arr = new int[n]; + std::cin >> n; + for (int i = 0; i < n; i++) { + std::cout << "Podaj wartość numer: " << i + 1 << ": "; + std::cin >> *(arr + i); + } + + std::cout << "Suma tych liczb to: " << sumuj(arr, n); + delete[] arr; + arr = nullptr; + return 0; +}