Kurde, ostatnio mam problem z wyrażeniem tego o co mi chodzi
Mam wektor wykresów (funkcji) i mam wektor danych
std::vector<TTik> Dane;
std::vector<TWykres> Wykresy;
// Gdzie TTik to struktura
struct TTik {
TDateTime DataGodzina;
std::vector<long double> Dane;
};
// A TWykres to uproszczona struktura opisująca wykres
struct TWykres {
int Adres;
TRodzajWykresu Rodzaj;
};
Typ wyliczeniowy opisuje mi jakiego rodzaju wykres (funkcje) dodałem do wektora Wykresy. Pole Adres w strukturze TWykres opisuje pozycję komórki w której znajdują się obliczenia danego wykresu (funkcji).
Jeżeli Dodam do wykresów coś takiego;
TWykres wykres0;
wykres1.Adres = 0;
wykres1.Rodzaj = tfwKurs;
To znaczy, że dodałem wykres (funkcje) Kursu; jeżeli dodam coś takiego;
TWykres wykres1;
wykres1.Adres = 1;
wykres1.Rodzaj = tfwMul;
To znaczy, że dodałem wykres (funkcje) mnożenia;
Problemem są wyliczenia jeżeli wykres (funkcja) posiada parametry. Przykład jak to wygląda w moim edytorze. Mul(W0,100); Oznacza to, żeby wykres(funkcje) W0 pomnożyć przez 100. Mul(W0,W1); Oznacza, pomnożyć wykres(funkcje) W0 przez W1. Wszystko działa dobrze jeżeli zachowuje kolejność w edytorze, czyli piszę kolejno:
- Kod: Zaznacz cały
W0 = Kurs();
W1 = Mul(W0,100);
W2 = Mul(W0,W1);
Rozpoznaje to wszystko i wektor wygląda tak: (pomijam to jak to robie pokazuje tutaj wynik końcowy)
TWykres w;
w.Adres = 0;
w.Rodzaj = tfwKurs;
Wykresy.push_back(w);
w.Adres = 1;
w.Rodzaj = tfwMul;
Wykresy.push_back(w)
w.Adres = 2;
w.Rodzaj = tfwMul;
Po rozpoznaniu liczę.
// PSEUDO KOD !!!!
for(int i = 0; i< Wykresy.size(); ++i) {
TWykres w = Wykresy[i];
// Rozpoznanie rodzaju wykresu;
switch(w.Rodzaj) {
case tfwKurs:
for(poczatek danych do koniec danych); // wyliczam wartosc
break;
case tfwMul:
for(poczatek danych do koniec danych); // wyliczam wartosc
break;
}
}
I Tutaj jest problem, który napisałem w 1 poście jeżeli napiszę tak:
- Kod: Zaznacz cały
W1 = Random(255);
W2 = if(W1>100) // Jeżeli wartości z wykresu 1 są większe od 100 to wartości W2 = 1
W3 = Funkcja1(W2); // Oblicz Funkcje1 z W2
Wszytko super, jeżeli napiszę tak:
- Kod: Zaznacz cały
W1 = if(W2>100); // nie mam jeszcze wartości W2
W2 = Random(255);
W3 = Funkcja1(W2); // Oblicz Funkcje1 z W2
Mam problem bo biorę do obliczania wartości 1 wykresu, wartości 2 wykresy który obliczę dopiero po obliczeniu 1. I Chodzi mi o to, jak to rozwiązać ?? Ustalić jakiś priorytet obliczenia funkcji ?? Czyli, że wpierw muszę obliczać takie takie taki i takie funkcje a na końcu inne ???
Mam nadzieję, że lepiej to opisałem. Nie chciałem tu wklejać całego kodu bo jest go za dużo.