zero divide

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

zero divide

Nieprzeczytany post autor: xpep »

Witam

Mam problem z dzieleniem przez zero,problem polega na tym ze EA jest duze zeby nie powiedziec, ogromne i ciezko wszelkie dzielenia sprawdzic gdzie jest to zero.

Czy jest jakas metoda ktora umozliwi znalezienie w EA w ktorym miejscu wystepuje to dzielenie?

Pozdrawiam

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

Mam problem z dzieleniem przez zero,problem polega na tym ze EA jest duze zeby nie powiedziec, ogromne i ciezko wszelkie dzielenia sprawdzic gdzie jest to zero.

Czy jest jakas metoda ktora umozliwi znalezienie w EA w ktorym miejscu wystepuje to dzielenie?
Po prostu wszędzie gdzie jest dzielenie,powinno być sprawdzenie, czy aby dzielnik nie jest zerem...

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

Trzeba by funkcje napisać i używać zamiast operatora dzielenia skoro MQL nie obsługuje wyjątków.

LowcaG
Pasjonat
Pasjonat
Posty: 1068
Rejestracja: 05 paź 2007, 15:39

Nieprzeczytany post autor: LowcaG »

Esco pisze:Trzeba by funkcje napisać i używać zamiast operatora dzielenia skoro MQL nie obsługuje wyjątków.
funkcję dzielenia?
to nie lepiej sprawdzac jednak czy to nie jest zero? z założenia nie powinno byc, jesli to ma mieć sens..

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Nieprzeczytany post autor: Esco »

Wewnątrz funkcji można sprawdzać automatycznie dzielenie i wyświetlać komunikat za trzeci parametr można dać komentarz i będzie wiadomo gdzie jest błąd.

Będzie to bardziej eleganckie rozwiązanie niż wstawianie wszędzie ifów.
(przynajmniej moim zdaniem)

A kod można od biedy przerobić półautomatycznie z opcja Szukaj.

Awatar użytkownika
xpep
Pasjonat
Pasjonat
Posty: 844
Rejestracja: 02 gru 2007, 11:50

Nieprzeczytany post autor: xpep »

LowcaG pisze:Po prostu wszędzie gdzie jest dzielenie,powinno być sprawdzenie, czy aby dzielnik nie jest zerem...
to dosc oczywiste :wink: chodzi o to ze nie ja pisalem EA i zastanawialem sie czy jest jakies lepsze rozwiazanie

crn
Gaduła
Gaduła
Posty: 117
Rejestracja: 17 mar 2009, 22:07

Nieprzeczytany post autor: crn »

ja jak mam taka sytuacje to, wylaczam kawalki kodu komentarzami (oczywiscie jak jest to mozliwe) takie 'dziel i zwyciezaj' :D

Staram sie podzilic kod na 2, pozniej znowu na 2 itd. az obszar poszukiwan bedzie mniejszy :)

Awatar użytkownika
CoVal
Gaduła
Gaduła
Posty: 320
Rejestracja: 06 paź 2005, 22:45

Nieprzeczytany post autor: CoVal »

Wylaczanie poszczegolnych sekcji kodu nie zawsze ma sens, ze wzgledu na to, ze jesli nie zostanie obliczona jakas wartosc to zmienna przez ktora dzielimy moze juz nie miec wartosci 0.

Ile w koncu masz tych dzielen w tym kodzie ? i ile zmiennych jakie pojawiaja sie w mianowniku ?

Ja napisalbym na koncu programu prosta funkcje

Kod: Zaznacz cały

er(int nrLinii, double mianownik)
w ktorej drukowalbym wszystkie wartosci zmiennych jakie kiedykolwiek wystepuja w mianowniku.

Funkcje ta wywolywalbym we wszystkich miejscach tuz przed dzieleniem, pierwszym parametrem bylby numer ktory potem moznaby sobie latwo zidentyfikowac, a drugim przekopiowana wartosc calego mianownika, czyli np.:

Kod: Zaznacz cały

er(13,(va345*or_prr-MathAbs(chu1)));
ale moze warto zamiast tego przysiasc i przeanalizowac ten cudzy kod...

Awatar użytkownika
Pierz Andrzej
Przyjaciel Forum
Przyjaciel Forum
Posty: 1200
Rejestracja: 02 lip 2006, 14:17

Nieprzeczytany post autor: Pierz Andrzej »

ale cudujecie :) ......
CTRL + F i macie 5 minut klikania i sprawa załatwiona ;)

dodać tak jak mówi ŁowcaG warunek if i po sprawie :)

pozdrawiam
Andrzej Pierz
z poważaniem
Andrzej Pierz
FOREX-SERVICE

ODPOWIEDZ