Grela Opublikowano 15 Czerwca 2010 Udostępnij Opublikowano 15 Czerwca 2010 Mianowicie mógłby by ktoś poprawić po mnie ten kod na średnią? Zupełnie nie wiem jak to naprawić. GML n=get_integer('podaj ilosc liczb do sredniej','') przezile=n repeat(przezile) get_integer('podaj liczbe','') I czy jest funkcja na silnie w GM czy samemu sobie trzeba zrobić i jak? Przy poprawianiu kodu(i ewentualnie napisaniu kodu na silnie) proszę to zrobić na podstawie mojego kodu GML (create) cochcesz=get_string("Witaj w programie Grelowronator! Co chcesz zrobic? # LISTA KOMEND: wpisz komendy",'') if cochcesz='komendy' {show_message('KOMENDY:#dodawanie#mnozenie#dzielenie#odejmowanie#pansowa') game_restart()} if cochcesz='pansowa' { room_goto(room1) } if cochcesz='dzielenie' { iloraz=get_integer("Podaj dzielna",'') / get_integer("Podaj dzielnik",'') aktualnaakcja=1 } if cochcesz='dodawanie' { suma=get_integer("Podaj składnik 1",'') + get_integer("Podaj składnik 2",'') aktualnaakcja=2 } if cochcesz='mnozenie' { mnozenie=get_integer("Podaj iloczyn 1",'') * get_integer("Podaj iloczyn 2",'') aktualnaakcja=3 } if cochcesz='odejmowanie' { roznica=get_integer("Podaj odjemna",'') - get_integer("Podaj odjemnik",'') aktualnaakcja=4 } if cochcesz='' {aktualnaakcja=0} GML (draw) if aktualnaakcja=0 {draw_text(x,y,'Nie wybrano zadnej akcji!')} if aktualnaakcja=1 {draw_text(x,y,'Wynik: ' + string(iloraz))} if aktualnaakcja=2 {draw_text(x,y,'Wynik: ' + string(suma))} if aktualnaakcja=3 {draw_text(x,y,'Wynik: ' + string(mnozenie))} if aktualnaakcja=4 {draw_text(x,y,'Wynik: ' + string(roznica))} Będę bardzo wdzięczny :). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 15 Czerwca 2010 Udostępnij Opublikowano 15 Czerwca 2010 Poszukaj w moich tematach, na forum jest moj skrypt na silnie :) A na srednia jest funkcja mean(). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Misiek999 Opublikowano 15 Czerwca 2010 Udostępnij Opublikowano 15 Czerwca 2010 GML var silnia,i; silnia = get_integer('',''); i=silnia-1 while i > 0 { silnia*=i i-=1; } return silnia jak nie chcesz ściągać całej paczki Muczka. ;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 15 Czerwca 2010 Udostępnij Opublikowano 15 Czerwca 2010 Misiek999: A co jak wpiszę wartość ujemną ? Silnia wtedy nie istnieje. Dodatkowo silnia z 0 to 1. Twój kod tego nie sprawdza. GML t=false;// do t wpisujesz liczbę silnia=1;//najmniejsza wartość silni</span> GML (licz silnia) for(i=t;i>0;i-=1) silnia*=i; Pamiętaj, że musisz dodać warunek sprawdzający czy podana liczba jest nieujemna( czyli czy >=0). Robisz po prostu odpowiednią pętle. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Grela Opublikowano 15 Czerwca 2010 Autor Udostępnij Opublikowano 15 Czerwca 2010 Akurat nie mam zamiaru wpisać wartości ujemnej :). A ktoś mógłby poprawić mój kod na średnią? :P Tak będzie dobrze co do silni? :P GML if cochcesz='silnia' { var silnia,i; silnia = get_integer('',''); i=silnia-1 while i > 0 { silnia*=i i-=1; } return silnia aktualnaakcja=5 } GML if aktualnaakcja=5 {draw_text(x,y,'Wynik: ' + string(silnia))} Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 16 Czerwca 2010 Udostępnij Opublikowano 16 Czerwca 2010 A jeżeli wpiszesz 0? U Ciebie wyjdzie, że silnia z 0 to 0, co jest nie prawdą. Ma wyjść jeden. Po za tym, Ty może nie wpiszesz liczby ujemnej, ale użytkownik może wpisać. I co wtedy? Wszystko się krzaczy. Jak programujesz to musisz brać pod uwagę wszystkie możliwe przypadki. Nie możesz założyć, że użytkownik zawsze będzie wpisywał liczby z dziedziny funkcji. Więc uważam, że powinieneś włożyć trochę więcej wysiłku i przerobić kod, tak aby był odporny na "złe" liczby. Chyba, że tylko ty masz korzystać z tego programu, to wtedy zupełnie inna bajka. Widzę także błąd w dzieleniu. Sprawdź jakie wartości może przyjmować dzielnik. A co do średniej arytmetycznej. GML if(cochcesz="srednia") { srednia=0,n=0; while(n<=0)//nie możesz podawać minus n czy 0 liczb, prawda? n=get_integer('podaj ilosc liczb do sredniej',''); repeat(n) srednia+=get_integer('podaj liczbe',''); srednia/=n; aktualnaakcja=???; return srednia; } Zmienna srednia musi być na samym początku równa 0. Jak nie wpiszesz wartości pod zmienną to może kryć się w niej dowolna liczba. Mogą Ci wyjść wspaniałe krzaczki, że po wykonaniu funkcji srednia wychodzi np -2716376. Return kończy działanie funkcji, więc przestaw go na ostatnie miejsce w funkcji, aby aktualnaakcja przyjęła podaną wartość. 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ę