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