Wszystkie ćwiczenia


Ćwiczenia 1

Struktury, unie, enumy

Czyli: czy istnieje świat bez obiektów?

Zadanie 0

Napisz program, który stworzy typ "punkt_3d", a następnie zainicjalizuje zmienną tego typu.
Przykład: Tworzenie typu

struct student
{
    int index;
    int semester;
};
                
Przykład: Zmienna danej struktury

int main()
{
    student s1, s2, s3;
    
    s1.index = 1;
    s1.semester = 3;

    s1.index = 2;
    s1.semester = 5;

    s1.index = 3;
    s1.semester = 7;
}
                

Zadanie 1

Utwórz nową strukturę (np. samochód, uczelnia). Dodaj do niej własne pola (mile widziane typy liczbowe), a następnie wzbogać ją o typ wyliczalny (własny enum). Czy może istnieć wartość "student" w enumie, jeśli zdefiniowaliśmy "student" jako strukturę?
Przykład: Tworzenie enuma

enum person_type
{
    guest,
    student,
    lecturer,
    professor
};
                
Przykład: Enum jako zmienna

int main()
{
    person_type somebody = guest;
    switch(somebody)
    {
        case student:
        case lecturer:
        case professor:
            std::cout << "Member of an university" << std::endl;
            break;
        case guest:
            std::cout << "Anybody" << std::endl;
            break;
    }
}
                

Zadanie 2

W tym zadaniu rozbudujemy structurę studenta.

  1. Dodaj #include <string>
  2. Do stuktury studenta dodaj pole typu string z nazwą "name"
  3. Napisz sygnatury następująych metod (przed metodą main)

    • student create();
    • void to_string(student);
  4. Napisz funkcję main tak, aby tworzyła zmienną typu student i inicjalizowała jej wartość metodą create, a potem wypisywała informacje o studencie za pomocą metody to_string.
  5. Za metodą main zrealizuj metody create oraz to_string (napisz ich ciało).
Przykład: Czytanie stringa ze standardowego wejścia

int main()
{
    std::string text;
    std::getline(std::cin, text);
}
                

Zadanie 3

Pomimo braku mechanik języków zorientowanych obiektowo (jak Java poznana na PPJ),

jesteśmy w stanie tworzyć własne typy składające się z innych typów (w tym prostych),

a także pisać metody charakterystyczne dla danego typu.

Zastanów się nad podobieństwami i różnicami w stosunku do programowania obiektowego.

Zadanie 4

Utwórz unię 3 różnych typów zmiennych (najlepiej liczbowych).

Następnie utwórz zmienną jej typu i ustaw jej wartość.

Przykład: praca z unią

union X
{
    int   integer;
    float floating;
};

int main()
{
    X x;
    x.integer = 3;
    x.floating = 3.14f;
    std::cout << x.integer << std::endl;
    std::cout << x.floating << std::endl;
}

                

Zadanie 5

Utwórz przestrzeń nazw. Umieść w niej 3 struktury.

Jedna struktura powinna posiadać członka typu innej struktury.

Zaproponuj kilka różnych metod (np. to_string) zgodnie z przeznaczeniem przestrzeni nazw.

Warto użyć typów takich jak string czy własne enumy.

Zaproponuj przykładowe wywołanie napisanej przestrzeni nazw za pomocą kodu w metodzie main.