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ącyn
kul i ustawia opis na„Beben stworzony”
wypelnij
- wypełnia bęben kulami od 1 don
i ustawia opis na„Beben gotowy do losowania”
mieszaj
- miesza zawartość bębna i ustawia opis na„Zawartosc wymieszana”
wypisz
- wypisujeopis
oraz numery pierwszychn
kulzwolnij
- 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
n
kul (tablica liczb całkowitych o rozmiarzen
) - Wypełniamy bęben kulami ponumerowanymi od 1 do
n
- Mieszamy losowo zawartość
- Podajemy numery
k
pierwszych 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
*.c
na*.cpp
- Struktura w C++ jest klasą, usuń zbędne słowo kluczowe
struct
przy deklaracjach zmiennych typubeben
lub uczyń typ reprezentujący bęben klasą - Zamień wywołania funkcji
malloc()
ifree()
na wywołania operatorównew
idelete
(Zarządzanie pamięcią) - Użyj strumieni
std::cin
istd::cout
z 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
auto
przy deklaracji obiektów i zmiennych (deklaracja typów auto) - Zamień deklarację struktury
beben
w klasęBeben
, zadbaj o hermetyzację obiektu (pola klasyBeben
powinny 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
,zwolnij
metodami klasyBeben
.
Rozwiązanie w postaci plików nagłówkowych *.h
i źródłowych *.cpp
umieść w Moodle Zadanie 1