I am Lord Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Potrzebuję funkcji która by zwracała tą wartość z danego zbioru wartości która jest najbliżej zera. Przykłady : closeToZero(100,-100,-10) zwróciła by liczbę -10 closeToZero(100,-100,10) zwróciła by liczbę 10 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Jest to pseudokod ;p int closetozero( int[] array ) { int close = 0x7fffffff; foreach( n in array ) { if( abs(n) < abs(close) ) close = n; } return close; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 11 Kwietnia 2010 Autor Udostępnij Opublikowano 11 Kwietnia 2010 Ok przetłumaczyłem sobie to na GML. Za wyjątkiem " foreach( n in intarray )" ale będą mi potrzebne zawsze 3 liczby to też pozwoliłem sobie to ominąć i zrobiłem: GML close = $7fffffff; if ( abs(argument0) < abs(close) ) close = argument0; if ( abs(argument1) < abs(close) ) close = argument1; if ( abs(argument2) < abs(close) ) close = argument2; return close; Na razie działa, dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Makary155 Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 min(abs(argument0),abs(argument1),abs(argument2)) najmniejsza dodatnia jest jednocześnie najbliższa 0. Tylko trzeba potem dać warunek jeśli wejściowa była ujemna to żeby zwróciło ujemną. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Wtedy wartości ujemne najbliższe zeru zwrócone będą jako dodatnie ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 11 Kwietnia 2010 Udostępnij Opublikowano 11 Kwietnia 2010 Da sie to zrobic na dowolna liczbe argumentow - jesli poda sie ich liczbe. Podam taki kod: GML var a,b; a = 1 b = abs(argument1) repeat(argument0) { if(abs(argument[a]) < b) b = argument[a] a += 1 } return b argument0 - liczba podawanych wartosci Powinno dzialac, choc nie sprawdzalem. PS: sorry, ze nie ma polskich znakow, pisze na angielskim netbooku... PS2: chodza sluchy, ze da sie to zrobic nawet bez podawania liczby argumentow - jakoby metoda if(variable_local_exists()), ale to juz nie moja broszka. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 11 Kwietnia 2010 Autor Udostępnij Opublikowano 11 Kwietnia 2010 No to tym sposobem mógłbym dać 14 argumentów ale potrzebne są mi tylko 3 więc na to samo wyjdzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Assassin Opublikowano 12 Kwietnia 2010 Udostępnij Opublikowano 12 Kwietnia 2010 Jeśli nie chcesz tak, to zrób sobie ifami, elsami warunki sprawdzające, która jest bliżej zera. Na 3 to proste. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 12 Kwietnia 2010 Udostępnij Opublikowano 12 Kwietnia 2010 Może tak: GML tab[0]=-1;//w tablice ta wpisz zbior swoich liczb tab[1]=1; tab[2]=2; min0=tab[0];//najblizej zera jest tab[0] (tak zakladamy) for(i=1;i<=2;i+=1) if(abs(tab)<abs(min0))//jezeli kolejna wartosc w tablicy jest mniejsza od min0, min0=tab;//to wartosc tab jest teraz najblizej zera (wszystko na wartosciach bezwzglednych) else if(abs(tab)==abs(min0)&&tab>min0)//jezeli chcesz aby liczby dodatnie byly uprzywilejowane w przypadku gdy min0=tab;//wartosci bewzgledne liczb sa sobie rowne (jezeli nie to usun ten warunek)</span></span> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
pablo1517 Opublikowano 6 Listopada 2010 Udostępnij Opublikowano 6 Listopada 2010 Już się bałem, że nikt nie zastosuje tego fora tutaj... poziom na GMclanie widzę sporo spadł. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się