Skocz do zawartości

Średnia i silnia


Grela

Rekomendowane odpowiedzi

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

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

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...