Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Eyebullet

[C/C++] Zadanie maturalne z informatyki o królikach

Polecane posty

Ostatnio naszla mnie ochota, zeby sprawdzic czy udaloby mi sie rozwiazac jakiekolwiek zadanie maturalne z informatyki.

I znalazlem jakis stary arkusz, wybralem w nim dosc proste w zalozeniu zadanie:

Polana o powierzchni 30000 m2 jest częściowo porośnięta trawą. Na polanie żyje pewna ilość królików, które żywią się trawą. Króliki żerują dwa razy dziennie: o świcie oraz o zmierzchu. Podczas każdego posiłku jeden królik zjada trawę z ćwierci metra kwadratowego polany. Trawa na polanie odrasta: od świtu do zmierzchu każdego dnia 5% nie zarośniętej powierzchni polany pokrywa się znów trawą, natomiast ilość królików nie zmienia się.

1 maja 2002 roku o godzinie 0:00 połowa powierzchni polany była porośnięta trawą, zaś na polanie żyło 100 królików.

Napisz program, ktory obliczy:

Jaka część polany (w procentach) będzie zarośnięta 1 czerwca 2002 roku tuż przed wieczornym posiłkiem królików?

Okazuje sie ze moje umiejetnosci programowania sa niskie i niestety nie uzyskalem poprawnego wyniku. I tu nasuwa sie moje pytanie: Dlaczego?

Oto kod mojego programu (dodaje z komentarzami ):

#include <cstdlib>
#include <iostream>
#include <stdio.h>
#define kroljedz 25 /* 1 krolik je 0.25m2 - 100 krolikow 25m2 - stad stala */
#define polana 30000 /* Pole polany */
main()
{
int dni; /* dni- licznik a- polana zarosnieta b- niezarosnieta
c- 5% niezerosnietej polany, ktora pokrywa sie trawa */
double trawa, c, b, a;
char litera='%';
a=15000.0;
b=15000.0;
dni=0;

do
{
++dni;
a=a-2*kroljedz; /* Króliki zjadaja zarosnieta czesc polany */
b=b+2*kroljedz; /* Zjedzona czesc polany staje sie niezarosnieta */
c=b*5/100; /* Obliczanie 5% z niezarosnietej czesci polany */
a=a+c; /* 5% niezarosnietej trawy staje sie zarosnieta */
b=b-c;

}while (dni <= 31); /* Petla dla liczby dni od 1 maja do 31 maja 2002. */


/* Dzień 1 czerwca */
a=a-kroljedz;
trawa=a*100/polana;

printf("Procent zarosnietej czesci polany wynosi %g",trawa);
printf("%c\n",litera);
system("PAUSE");
return EXIT_SUCCESS;
}

Prawidlowa odpowiedz wynosi:

87,78%

Prosilbym o wskazanie tego, co zrobilem zle, ale takze chetnie zobacze inne sposoby rozwiazania tego zadania.

Wiem, ze struktura programu pozostawia wiele do zyczenia, ale ucze sie dopiero od niedawna i specjalnie nie myslalem nad minimalizacja tego kodu.

Uzywam Dev C++ 4.9.9.2, jezeli ma to jakies znaczenie.

Link do komentarza
Udostępnij na innych stronach

W tym jest więcej matmy niż programowania.

Zwróć uwagę, że posiłków będzie 63 (31*2 za maj + 1 za pierwszy posiłek czerwca).

Twoje króliki jedzą 2 posiłki po czym trawa odrasta, a wg. treści zadania króliki jedzą z rana, trawa odrasta po czym jest drugi posiłek. W nocy trawa nie odrasta i cykl się powtarza.

Niech króliki zjedzą, trawa odrośnie, a później faktycznie możesz jechać pętlą tak, jak to robisz.

PS. Tytuł tematu zmieniłem na bardziej konkretny.

Link do komentarza
Udostępnij na innych stronach

Twoje króliki jedzą 2 posiłki po czym trawa odrasta, a wg. treści zadania króliki jedzą z rana, trawa odrasta po czym jest drugi posiłek.

Masz racje, po wprowadzeniu zmian zadzialalo. :biggrin:

Popelnilem jeszcze blad z dniami. 1 czerwca zrobilem osobno, a petla zaczynala sie od dnia 0 do 31, czyli powtarzala sie 32 razy, a nie 31. Tez poprawilem.

Po zaokragleniu wyniku do 2 miejsc po przecinku wyszedl poprawny wynik.

Dzieki za pomoc. :thumbsup:

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...