Symulacja przebiegu zjawiska Firma „GreenLea” podpisała umowę

Transkrypt

Symulacja przebiegu zjawiska Firma „GreenLea” podpisała umowę
Symulacja przebiegu zjawiska
Firma „GreenLea” podpisała umowę na utrzymanie trawników miejskich: koszenie trawników
i wywożenie z miasta skoszonej trawy. Firma dysponuje s=30 samochodami do wywozu trawy.
Pierwszego dnia rano zgromadzone było t=10 000 m3 skoszonej trawy.
Objętość zgromadzonej trawy zmienia się codziennie w następujący sposób:
• przed południem każdy samochód firmowy wywozi 15 m3 skoszonej trawy z miasta,
• w ciągu każdego dnia kosi się 600 m3 trawy,
• w nocy objętość zgromadzonej trawy maleje do 97%, z zaokrągleniem w dół do l. całkowitej
(zadanie jest okrojoną wersją zadania z matury 2011, arkusz II poziom rozszerzony)
Zadanie 1
Zrób wykaz ilości trawy rano w kolejnych dniach, w zakresie do 200 dni (około 7 miesięcy).
int s = 30;
int trawa = 10000;
int dzien = 0;
cout << "dzien \t trawa \n";
// nagłówki kolumn wyników
do
{
dzien ++;
trawa = 0.97*(trawa - s*15 + 600);
// ponieważ trawa jest typu int, obliczona wartość
// będzie obcięta w dół do liczby całkowitej
cout << dzien << "\t" << trawa << endl;
}
while (dzien<200 && trawa>0);
// powtarzaj dopóki dzień<200 i jest trawa do sprzątania
Zadanie 2
Jaka jest najmniejsza liczba samochodów s potrzebna firmie, aby pewnego dnia <= 200
móc do wieczora wywieźć całą aktualnie zgromadzoną trawę?
Sporządź zestawienie: liczba samochodów s i odpowiadająca jej liczba dni potrzebnych do
posprzątania całej trawy do wieczora w kolejnych dniach.
Uwaga: do wieczora ma pozostać 0 trawy, a dzienne koszenie = 600, więc dzienny wywóz
s*15 musi to zmieścić, czyli s musi być równe przynajmniej 600/15 = 40.
Jeśli trzeba dodatkowo posprzątać zaległy zapas trawy, to potrzeba więcej samochodów.
int s = 40;
// jeśli będzie mniej samochodów, to na pewno nie da się posprzątać całej trawy
while (true)
{
int trawa = 10000;
// początkowy stan trawy
int dzien = 0;
cout << "s=" << s << "\t";
// wypisz liczbę samochodów
do
{
dzien++;
trawa = 0.97*(trawa - s*15 + 600);
} while (dzien<200 && trawa>0); // powtarzaj dopóki dzień<200 i jest trawa do sprzątania
if (trawa<=0) {
// jeśli trawa się skończyła, to wypisz w którym dniu
cout << dzien << " dni \n";
getch();
if (dzien==1) break;
// jeżeli trawa skończyła się już w pierwszym dniu,
// to już nie zwiększaj liczby samochodów, wyjdź z pętli: break
}
else cout << " nie da sie zwiezc calej trawy w ciagu 200 dni\n";
s++;
}
// zwiększ liczbę samochodów o 1

Podobne dokumenty