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);
Kule w bębnie reprezentowane są przez liczby całkowite od 1 do n. Bęben jest strukturą zawierającą rozmiar, tablicę kul (dynamicznie alokowaną tablicę liczb całkowitych) oraz napis opisujący aktualny stan bębna.
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, zwalniając pamięć zajmowaną przezkule
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:
- Program wczytuje z terminala od użytkownika dwie wartości naturalne
kin - Tworzony jest bęben losujący mieszczący
nkul - Bęben wypełniany jest kulami ponumerowanymi od 1 do
n - Zawartość bębna zostaje wymieszana
- Na wyjściu wypisywane są numery
kpierwszych kul
Przydatne funkcje:
- time.h : time
Przykład działania programu:
k=6 n=49 Wylosowane kule: 23 5 45 12 34 49
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)
Rozwiązanie w postaci plików nagłówkowych *.h i źródłowych *.cpp umieść w Moodle Zadanie 1