CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Jak to policzyć w miarę szybko ?

Jak to policzyć w miarę szybko ?

dział ogólny

Jak to policzyć w miarę szybko ?

Nowy postprzez Corvis » wtorek, 10 grudnia 2013, 22:59

Witam,

Mój program analizuje dane według funkcji podanych przez użytkownika przykład:

F0 - Kurs
F1 - Funkcja ( F2 )
F2 - if coś tam > 10

Chodzi o to że F1 aby się wykonało potrzebuje wartości F2 i tu zaczyna się problem jak to dobrze policzyć do tej pory liczyłem to tak ( Przykład )

Czyli dla każdego wykresy ( funkcji ) liczyłem cały zakres danych

KOD cpp:     UKRYJ  
for(int w = 0; w < Wykresy.size(); ++w) {
        wyk = Wykresy[w];

        if(wyk.TypFunkcji == tfwKurs) {

                for(int t = 0; t < DaneKursow.size(); ++t) {
                        DanePrzeliczone[t].WartosciTikow[wyk.Adres] = DaneKursow[t].WartosciTikow[wyk.ParametryFunkcji[0].Wartosc];
                }

        } else if(wyk.TypFunkcji == tfwConst) {

                for(int t = 0; t < DaneKursow.size(); ++t) {
                        DanePrzeliczone[t].WartosciTikow[wyk.Adres] = wyk.ParametryFunkcji[0].Wartosc;
                }
        }
}
 


Jest jednak problem - takie liczenie nie sprawdzi się w przypadku przykładu który podałem:

F0 - Kurs
F1 - Funkcja ( F2 )
F2 - if coś tam > 10

F1 wykona się dobrze dopiero wtedy gdy będzie miała wartośc F2 - czyli muszę to liczyć tak:

KOD cpp:     UKRYJ  
for(int t = 0; t < DaneKursow.size(); ++t) {

        for(int w = 0; w < Wykresy.size(); ++w) {

                wyk = Wykresy[w];

                if(wyk.TypFunkcji == tfwKurs) {
                        DanePrzeliczone[t].WartosciTikow[wyk.Adres] = DaneKursow[t].WartosciTikow[wyk.ParametryFunkcji[0].Wartosc];
                } else if(wyk.TypFunkcji == tfwConst) {
                        DanePrzeliczone[t].WartosciTikow[wyk.Adres] = wyk.ParametryFunkcji[0].Wartosc;
                }

        }
}
 


Dla każdej danej liczyć wartości funkcji ( kod wyżej ) a do tego wpierw przeliczyć wartość dla t = 0 i kolejne wartości t>0 robić jako t-1 ( aby mieć już dane ) :

t = 0; -> przeliczenie i ustawienie pierwszej wartości funkcji
t = 1 -> zmieniam na t = 0
t = 2 -> zmieniam na t = 1
t = 3 -> zmieniam na t = 2

itp. Dzięki temu zachowam warunek: F1 - Funkcja ( F2 )

Problem tylko jest taki, że przy takim zapisie czas liczenia wydłuża się razy 10 :/

Jeżeli ktoś rozumie mój problem i może coś doradzić to chętnie poczytam bo wymiękam już z tym problemem
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows 7Chrome

Re: Jak to policzyć w miarę szybko ?

Nowy postprzez polymorphism » środa, 11 grudnia 2013, 10:45

A może to po prostu musi trwać 10x dłużej? Z tego co napisałeś, trudno coś sensownego napisać, trudno odnieść kod do tych funkcji/skryptu.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości