Od C do C++
Powtórka z C
- typy
- operatory
- instrukcje sterujące
- wskaźniki
- dynamiczny przydział pamięci
- struktury
- pliki nagłówkowe i źródłowe
- różnice między C a C++
Ćwiczenia
Losowanie Lotto
Zaimplementuj program w C (potem przerobimy go na C++) realizujący losowanie k liczb z n bez zwracania zgodnie z ponizszym schematem.
Utwórz plik nagłówkowy beben.h z poniższą zawartością:
struct beben { int rozmiar; int *kule; char* opis; }; struct beben *utworz(int n); struct beben *wypelnij(struct beben *b); struct beben *mieszaj(struct beben *b); void wypisz(struct beben *b, int n); void zwolnij(struct beben *b);
Funkcje powinny realizować:
utworz- tworzy bęben mieszczącynkul i ustawia opis na„Beben stworzony”wypelnij- wypełnia bęben kulami od 1 doni ustawia opis na„Beben gotowy do losowania”mieszaj- miesza zawartość bębna i ustawia opis na„Zawartosc wymieszana”wypisz- wypisujeopisoraz numery pierwszychnkulzwolnij- niszczy bęben,
Zdefiniuj powyższe funkcje w pliku źródłowym beben.c.
W osobnym pliku źródłowym program.cpp napisz program, który korzystając z tych funkcji przeprowadzi losowanie wykonując nastepujace kroki:
- Użytkownik podaje wartości
k,n - Tworzony jest bęben losujący mieszczący
nkul (tablica liczb całkowitych o rozmiarzen) - Wypełniamy bęben kulami ponumerowanymi od 1 do
n - Mieszamy losowo zawartość
- Podajemy numery
kpierwszych kul
Przydatne funkcje:
- time.h : time
Zadanie 1: Od C do C++
Wyeliminuj z programu losującego elementy języka C na rzecz mechanizmów wykorzystywanych w C++
- Zamień rozszerzenia nazw plików źródłowych z
*.cna*.cpp - Struktura w C++ jest klasą, usuń zbędne słowo kluczowe
structprzy deklaracjach zmiennych typubebenlub uczyń typ reprezentujący bęben klasą - Zamień wywołania funkcji
malloc()ifree()na wywołania operatorównewidelete(Zarządzanie pamięcią) - Użyj strumieni
std::cinistd::coutz biblioteki<iostream>do wczytywania danych i wyświetlania komunikatów (Strumienie) - Wykorzystaj obiekt typu
<string>zamiast tablicchar*do reprezentowania napisów - Jeżeli wykorzystujesz nadal którąkolwiek funkcję z biblioteki standardowej C zastąp ją odpowiednikiem ze standardowej biblioteki C++. Np. w C++11 dostępna jest funkcja std::random_shuffle.
- Użyj referencji zamiast wskaźników tam gdzie uznasz to za stosowane (Referencje)
- Dla C++11 użyj specyfikatora
autoprzy deklaracji obiektów i zmiennych (deklaracja typów auto) - Zamień deklarację struktury
bebenw klasęBeben, zadbaj o hermetyzację obiektu (pola klasyBebenpowinny być prywatne, a ewentualny dostęp do nich powinien być realizowany przez metody dostępowe (tzw. gettery i settery), zastąp funkcjeutworz,wypelnij,mieszaj,wypisz,zwolnijmetodami klasyBeben.
Rozwiązanie w postaci plików nagłówkowych *.h i źródłowych *.cpp umieść w Moodle Zadanie 1