Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C++] zadanie, klasy i dziedziczenie

Raffis20 25 Feb 2012 12:54 3181 3
  • #1
    Raffis20
    Level 9  
    Witam,
    może na początek przedstawię zadanie jakie mam do wykonania:

    Program powinien składać się z co najmniej czterech klas:
    1 klasy figura posiadającej parametry wierzchołki,
    2 klasy trójkąt posiadającej trzy wierzchołki (definiowane poprzez trzy parametry – punkty – w konstruktorze),
    3 klasy czworokąt posiadającej cztery wierzchołki (definiowane jak powyżej),
    4 klasy kwadrat posiadającej cztery wierzchołki (definiowane jak powyżej, ze sprawdzeniem, czy jest to kwadrat).
    Klasy trójkąt, czworokąt i kwadrat mają dziedziczyć po klasie figura. Klasa figura ma udostępniać metody:
    - wyświetlającej wszystkie wierzchołki figury,
    - liczącej pole figury,
    - liczącej obwód figury.
    Przykładowy scenariusz użycia:
    1. Uruchomienie programu
    2. Wprowadzenie liczy i typu figur: ‘tts’ (trójkąt, trójkąt, czworokąt)
    3. Wprowadzenie trzech punktów (2,2) (3,3) (1,1) – wierzchołków pierwszego trójkąta
    4. Wprowadzenie trzech punktów (5,0) (0,0) (2.5,2.5) – wierzchołków drugiego trójkąta
    5. Wprowadzenie czterech punktów (0,0) (2,0) (2,2) (0,2) – wierzchołków kwadratu
    6. Wywołanie obliczenia wszystkich pól trzech figur


    Szczerze mówiąc, nie wiem od czego się zabrać. Wprowadzanie tekstu np. 'tts' zrobiłbym aby przekazywało do tablicy znakow, nastepnie obliczalo dlugosc tego ciagu znakow (np. poprzez strlen) i potem petla for lecialo by od 0 do ost wyrazu ciagu sprawdzajac kazda litere w switch'u jaka to figura. Tylko nie wiem jak wykorzystac te klasy dokładnie tak jak w poleceniu, dopiero zaczynam się ich uczyć, także proszę o wyrozumiałość.
    Poniżej zamieszczam kod wyżej opisanego zdarzenia:


    Code: cpp
    Log in, to see the code



    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. - arnoldziq
  • #2
    prog112
    Level 2  
    W skrócie:
    - struktura Wierzchołek, posiadająca x,y floatowe by się przydała
    - w figurze jakaś tablica/lista STL (najlepiej typ std::vector) z wierzchołkami + wirtualne metody liczące pole, obwodu, podająca wierzchołki
    - kolejne klasy figur wrzucające do kontenera kolejne punkty i overridujące funkcje abstrakcyjne
  • #3
    bgoz
    Level 1  
    Taki stary program wygrzebałem co kiedyś zrobiłem żeby poćwiczyć dziedziczenie i dostęp do pola protected da sie to przerobić i powinieneś sobie jakoś poradzić dalej.



    Code: cpp
    Log in, to see the code
  • #4
    Raffis20
    Level 9  
    Dokończyłem zadanko, podaję kod jakby ktoś w przyszłości miał taki sam/podobny program do napisania:

    Code: cpp
    Log in, to see the code


    Teraz męczę się z kolejnym zadankiem:
    Działania powinny być wprowadzane przy pomocy jednej zmiennej, która przekazana do odpowiedniej metody klasy Calculator odczyta typ działania, liczby. Liczby zespolone powinny być wprowadzane w postaci ‘część_rzeczywista ± iczęść_urojona’. Część urojona liczby powinna być oznaczona symbolem ‘i’ lub ‘j’. Wprowadzone parametry powinny być zapisywane w klasie Calculator w formie tablicy obiektów klasy Parametr, posiadającej dwa atrybuty – wartość oraz symbol. Wczytanie nowego/nadpisanie starego parametru powinno odbywać się poprzez wprowadzenie działania ‘symbol_parametru = wartość’.
    Przykładowy scenariusz użycia:
    1. Uruchomienie programu
    2. Wprowadzenie równania ‘a=5’
    3. Wprowadzenie równania ‘b=-3+ia + 5+i10’
    4. Wprowadzenie równania ‘a-b’
    5. Wyświetlenie wyniku ‘-3+i15’
    6. Wprowadzenie równania ‘a’
    7. Wyświetlenie wyniku ‘5’
    8. Powrót do oczekiwania na wpisanie kolejnego równania

    Zacząłem tak:

    Code: cpp
    Log in, to see the code


    Co o tym sądzicie? (coś mam problem z tym skracaniem tablic dynamicznych, chyba to nie działa poprawnie, a nie widzę błędu :/) Może macie inny pomysł jak się za to zabrać?

    EDIT:
    Cały dzień przesiedziałem i zrobiłem dodawanie,odejmowanie,mnożenie liczb całkowitych + zapisywanie parametrów równań.

    Code: cpp
    Log in, to see the code


    EDIT:
    Ok, juz ogarnalem temat co i jak. :)