Dynamiczna tablica obiektów - problem

0

Witam,
Mam do zrobienia takie zadanko
[code]
Stwórz klasę definiującą okręg. Każdy okręg składa się ze współrzędnych środka oraz
promienia (współrzędne środka x,y powinny być zmiennymi całkowitymi, promień r – liczbą
rzeczywistą nieujemną). Dokonaj wczytania liczb ze sprawdzeniem poprawności (r>=0).
 Zdefiniuj następujące konstruktory dla stworzonej klasy:
o konstruktor z parametrami do przypisania wartości początkowych na standardowe
współrzędne środka S(0,0) oraz promień r=1;
o konstruktor z niepełną liczbą parametrów;
o konstruktor umożliwiający wpisane użytkownikowi dowolnych wartości
Sprawdź ich zachowanie.
 Napisz funkcje obliczające Pole oraz Obwód okręgu oraz wyprowadzające wynik z
dokładnością do 0,001.
 Utwórz dynamiczną tablicę obiektów. Użytkownik powinien decydować o jej rozmiarze.
Użytkownik powinien decydować który z konstruktorów dla każdego obiektu jest
wywoływany. Powinna być możliwość wczytania parametrów okręgu z pliku. Wyświetl dla
każdego obiektu w tablicy jego pole i obwód.
 Napisz funkcję umożliwiającą wybranie dowolnych dwóch okręgów z powyższej tablicy oraz
zbadanie czy dane okręgi mają punkty wspólne. Program powinien poinformować o
tym użytkownika w postaci wyprowadzenia komunikatu o ilości punktów wspólnych
(zero, jeden, dwa lub nieskończenie wiele).
 Zaimplementuj zapis zapełnionej tablicy obiektów do pliku zewnętrznego oraz możliwość jej
ponownego wczytania z tego pliku.
[/code]

na razie napisałem kod do momentu, w którym mam utworzyć dynamiczną tablicę.
Dalej nie mam pomysłu co zrobić. Mógłby ktoś mnie jakoś naprowadzić?

To mój kod póki co:
[code]http://pastebin.com/6izQHZLJ[/code]

0
#include <iostream>

int main()
{
    int a;
    std::cin >> a;
    int *tablica = new int[a];
}

przykład tworzenia tablicy dynamicznie

0

Tak, to wiem jak to się robi. Natomiast dalej nie wiem co zrobić.

//Użytkownik powinien decydować który z konstruktorów dla każdego obiektu jest
wywoływany. Powinna być możliwość wczytania parametrów okręgu z pliku. Wyświetl dla
każdego obiektu w tablicy jego pole i obwód.//

Po co nam ta tablica? W jaki sposób przypisać do niej poszczególne obiekty? Jak wczytać parametry okręgu z pliku?

0

gdy tworzy się tablice obiektów to w c++ zawsze będą wywołane domyślne konstruktory (np w javie najpierw robisz pojemnik i dopiero później wsadzasz do niego obiekty, tutaj dostajesz pakiet).

#include <iostream>

class test{
  public :
  test()
  {
      std::cout << 1;
  }
};

int main()
{
    int a;
    std::cin >> a;
    test *tablica = new test[a];
    delete[] tablica;
}
 

tutaj masz kawałek kodu który pokazuje o co mi chodzi.

Możesz napisać w konstruktorze domyślnym coś na zasadzie

cout << " podaj jaki konstruktor 0 domyslny 1 z dwoma par 2 z trzema par";
cin >> decyzja;
if (decyzja == 1)
  //wywolujesz kostrusktor z dwoma parametrami, np test(5,3)
if (decyzja == 2)
  //wywolujesz kostrusktor z trzema parametrami, np test(5,3,9)
else
{
  // a tutaj domyslny
}
  

ale lepiej zrobić z tego funkcje ktoryKonstruktor() i w niej to robić a wywoływać jedynie funkcje ktoryKonstrutkor w domyślnym konstruktorze

zależy jak będzie wyglądał ten plik, ale zapewne konstrukcja będzie banalna coś na zasadzie

plik >> tablica[i].x >> tablica[i].y >> tablica[i].r

gdzie plik będzie obiektem IO

1

Hej:)

Mnie się zdaje że to powinno wyglądać tak na konsoli:

> podaj liczbe okregow? 
4
> podaj parametry 1 okregu (x,y,r, Enter - domyslne):

> podaj parametry 2 okregu (x,y,r, Enter - domyslne):
1 2 34.56
> podaj parametry 3 okregu (x,y,r, Enter - domyslne):
1 2
> podaj parametry 4 okregu (x,y,r, Enter - domyslne):
14.5

O ile konstruktor domyślny i ten do wszystkich parametrów jest prosty, o tyle ten z niepełną liczbą to już Twoja decyzja jak zrobisz:D Ja tu podałam przykład że kiedy się wpisze dwie liczby to powinien się wywołać konstruktor tylko z punktem, jak jedną - z promieniem:)

Schemat działania programu jest taki:

  1. Wczytaj ilość okręgów
  2. Zaalokuj tablicę
  3. Dla każdego okręgu utwórz obiekt za pomocą odpowiedniego konstruktora (pętla) i wpisz go do tablicy

Jak dobrze pomyślisz to będziesz mógł użyć tej samej funkcji to wczytywania wynikow z pliku jak i z konsoli :P Co do czytania z pliku to w sieci przykładów jest pełno - na penwo znajdziesz :)

0

Jakoś mi to nie wychodzi...
Pogubiłem już się w tych klasach całych i sam nie wiem co dalej...
Mój obecny kod:
http://pastebin.com/Ri32513y

Pomoże mi ktoś to okiełznać?

0

Hej a co nie działa? Ten kod się w ogóle kompiluje?:p

0

No, nie kompiluje się bo nie mam pojęcia jak to zrobić. Dziękuje wszystkim za rady, ale nie mam pomysłu :(
Mam do napisania na jutro ten program i za chiny nie mogę przebić się przez ten jeden podpunkt.
Treść zadania: http://pastebin.com/Lf3G8ssX

Utknąłem na punkcie 3 i dalej nie wiem co robić.
Siedzę na tym cały dzień, myślałem, że coś wykombinuje ale nie mam pomysłu. W dodatku zostały mi oprócz tego 3, jeszcze 2 podpunkty.
Już jestem strasznie tym zdenerwowany, a na jutro muszę mieć to zrobione...

W tym momencie mój kod wygląda tak:
http://pastebin.com/gzGiyEsu

Dalej nie wiem co zrobić :(
Musze to mieć na jutro bo mnie obleją!

1 użytkowników online, w tym zalogowanych: 0, gości: 1