PRI, laboratorium 3


Zakres materiału: Funkcje, zmienne globalne i lokalne. Wskaźniki, przekazywanie argumentów do funkcji przez wartość i wskazanie. (5 pkt)


Zadanie 1. Funkcje, zmienne globalne i lokalne. Wskaźniki.

  1. W katalogu prm3 utworzyć nowy projekt zad1 i do głównego pliku projektu skopiować zawartość pliku źródłowego zad1.c
  2. Zapoznać się z widocznością zmiennych globalnych i lokalnych, oraz sposobami deklarowania i wywoływania funkcji. (linie 34-37, linie 3-11)
  3. Zapoznać się z definicją funkcji zwracającej wartość. (linie 39-42, linie 13-15)
  4. Zapoznać z uproszonym sposobem deklaracji funkcji. (linie 44-45, linie 17-19, linie 58-63)
  5. Zaobserwować co stanie się, jeżeli argument funkcji zadeklarowano jako const, a funkcja wykonuje operacje na tej zmiennej (linie 21-23)
  6. Zapoznać się ze sposobami przekazywania argumentów przez wartość i wskazanie. Na tej podstawie wytłumaczyć, dlaczego funkcja scanf wymaga argumentów poprzedzonych znakiem & (linie 47-53, linie 21-31)

Zadanie 2. Przekazywanie argumentów do funkcji przez wartość i wskazanie.

  1. W katalogu prm3 utworzyć nowy projekt zad2 i do głównego pliku projektu skopiować zawartość pliku źródłowego zad2.c
  2. Uruchomić program i zapoznać się z jego działaniem.
  3. Zmodyfikować program tak, aby realizował (poprawnie) zadanie zamiany wartości zmiennych przez wywołanie funkcji. Wskazówki: skorzystać z przekazania argumentu przez wskazanie i wprowadzić dodatkową zmienną lokalną.

Zadanie 3. Zadanie samodzielne.

Grupa A

  1. Napisać i uruchomić program wyznaczający pierwiastki równania kwadratowego. Współczynniki równania powinny być wprowadzana za pomocą funkcji scanf. Program powinien zawierać funkcję o deklaracji:

    int pierwiastki(double a, double b, double c, double *wsk_x1, double *wsk_x2);
    

    która zwraca liczbę pierwiastków. Jeżeli liczba pierwiastków jest większa od zera, ich wartości powinny być wpisywane pod adresy w pamięci zawarte we wskaźnikach wsk_x1 oraz wsk_x2.

  2. Przykładowe wyniki działania programu:

    Prosze podac wspolczynniki rownania kwadratowego ax^2+bx+c: 1 2 1
    Liczba pierwiastkow: 1
    Wartość pierwiastka: -1
    
    Prosze podac wspolczynniki rownania kwadratowego ax^2+bx+c: 1 3 2
    Liczba pierwiastkow: 2
    Wartość pierwiastka #1: -1
    Wartość pierwiastka #2: -2
    

Grupa B

  1. Napisać i uruchomić program wyznaczający pole i obwód koła na podstawie jego promienia. Program powinien zawierać funkcję o deklaracji:

    int obliczenia(double promien, double *wsk_pole, double *wsk_obwod);
    

    Funkcja ta zwraca 0 gdy obliczenia się powiodą i 1 gdy nie jest możliwe wykonanie obliczeń (tzn. gdy promien<0). Jeżeli obliczenia się powiodą, pole i obwód powinny być wpisywane pod adresy w pamięci zawarte we wskaźnikach wsk_pole oraz wsk_obwod.

  2. Przykładowe wyniki działania programu:

    Prosze podać promien kola: 1
    Pole i obwod wynosza: 3.14 i 6.28
    
    Prosze podać promien kola: -1.3
    Promien mniejszy od zera!