Ślad: • 01_hello_cpp

Od C do C++

Writing /home/grochu/public_html/wiki/data/cache/e/e7d55187cc0ed061c6ba4d588f6bded2.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/cache/e/e7d55187cc0ed061c6ba4d588f6bded2.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/8/8916a6e99403eb4ad7c3a40eff5cb4b5.i failed
Writing /home/grochu/public_html/wiki/data/cache/8/8916a6e99403eb4ad7c3a40eff5cb4b5.metadata failed
Writing /home/grochu/public_html/wiki/data/cache/e/e7d55187cc0ed061c6ba4d588f6bded2.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.

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ący n kul i ustawia opis na „Beben stworzony”
  • wypelnij - wypełnia bęben kulami od 1 do n i ustawia opis na „Beben gotowy do losowania”
  • mieszaj - miesza zawartość bębna i ustawia opis na „Zawartosc wymieszana”
  • wypisz - wypisuje opis oraz numery pierwszych n kul
  • zwolnij - 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:

  1. Użytkownik podaje wartości k, n
  2. Tworzony jest bęben losujący mieszczący n kul (tablica liczb całkowitych o rozmiarze n)
  3. Wypełniamy bęben kulami ponumerowanymi od 1 do n
  4. Mieszamy losowo zawartość
  5. Podajemy numery k pierwszych kul

Przydatne funkcje:

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 typu beben lub uczyń typ reprezentujący bęben klasą
  • Zamień wywołania funkcji malloc() i free() na wywołania operatorów new i delete (Zarządzanie pamięcią)
  • Użyj strumieni std::cin i std::cout z biblioteki <iostream> do wczytywania danych i wyświetlania komunikatów (Strumienie)
  • Wykorzystaj obiekt typu <string> zamiast tablic char* 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 klasy Beben powinny być prywatne, a ewentualny dostęp do nich powinien być realizowany przez metody dostępowe (tzw. gettery i settery), zastąp funkcje utworz, wypelnij, mieszaj, wypisz, zwolnij metodami klasy Beben.


Rozwiązanie w postaci plików nagłówkowych *.h i źródłowych *.cpp umieść w Moodle Zadanie 1