Prosty program obrazujący działanie fermy

0

Witam, piszę w programie Code::Blocks 13:12 z mingw i za zadanie mam napisanie takiego programu:

Pani Binarna została właścicielką kurzej fermy, na której znajduje się 200 kur niosek.
Kilogram paszy kosztuje 1,9 zł, a jedna kura zjada przez cały dzień 0,2 kg paszy.
Rozważamy okres hodowli trwający sto osiemdziesiąt dni. Dni są ponumerowane
od 1 do 180. Pierwsza niedziela przypada siódmego dnia.
Codziennie w południe, z wyjątkiem niedziel, każda kura znosi 1 jajko i tego samego dnia
pani Binarna sprzedaje wszystkie jajka w cenie 0,9 zł za sztukę.
W okolicach fermy grasuje lis, który w każdy dzień o nieparzystym numerze, po zmroku
(po posiłku kur, po zniesieniu i ewentualnym sprzedaniu jajek) zmniejsza liczbę kur
o 2 sztuki naraz.
Co 30 dni (tj. w dniu trzydziestym, sześćdziesiątym itd.) rano, przed posiłkiem kur,
pani Binarna powiększa stado o 20%, kupując kolejne kury na giełdzie (liczbę kupionych kur
zaokrąglamy w dół do liczby całkowitej) po 18 zł za sztukę.

a) Podaj, w którym dniu i o jakiej porze dnia po raz pierwszy liczba kur ponownie osiągnie
wartość dokładnie 200 sztuk.
b) Podaj łączną kwotę, jaką pani Binarna wydała na paszę dla kur w ciągu 180 dni.
c) Każdego dnia pani Binarna oblicza swój dzienny zysk, którym jest kwota ze sprzedaży
jajek pomniejszona o koszt paszy dla kur i koszt kur dokupionych w tym dniu. Realnym
zyskiem po danym dniu jest suma dotychczas uzyskanych dziennych zysków.
Podaj, po którym dniu po raz pierwszy realny zysk pani Binarnej przekroczy 1 500 zł,
oraz podaj, jaki będzie realny zysk pani Binarnej po 180 dniach.

Mój kod wygląda tak:

#include <iostream>
#include <cstdlib>
using namespace std;


main(){

string pora;
int kury=200, spr1 = 0, spr2 = 0;
float zarobek=0, koszt_paszy=0, koszt_kur=0;


for(int i = 1; i<=180; i++){

pora = "ranek";
if ( (i % 30) == 0){
kury = kury + kury/5;
koszt_kur = koszt_kur + ( (kury/5)*18 );
}

if ( kury==200 && i!= 1 && spr1==0){
cout << "Jest ponownie 200 kur, jest " << pora << " dnia " << i <<endl;
spr1 = 1;
}

koszt_paszy = koszt_paszy + (kury*0.2*1.9);

if ( (i % 7) != 0){
zarobek = zarobek + (kury*0,9);
}
pora = "poludnie";


if ( (i % 2) != 0){
kury = kury-2;
}
pora = "noc";

if ( (zarobek-koszt_paszy-koszt_kur)>1500 && spr2==0 ){
cout << "Realny zarobek w dniu " << i << " przekroczyl 1500 i wynosi " << zarobek-koszt_paszy-koszt_kur;
spr2=1;
}

}
cout << endl << "Laczny koszt paszy wynosi " << koszt_paszy << endl;
cout << "Realny zysk po 180 dniach to " << zarobek-koszt_paszy-koszt_kur << endl;

return 0;
};

Coś jest jednak nie tak, bo otrzymuję ujemny zysk, a wnioskując z treści zadania nie ma takiej opcji (gdyż mamy podać kiedy przekroczy on 1500zł.
Sporo czasu spędziłem już szukając tu błędu, ale nie mogę się go doszukać. Czuję, że wina leży po stronie jakiegoś głupiego błędu przeze mnie popełnionego. Proszę o wyrozumiałość, gdyż jestem początkujący (ale nie przyszedłem tutaj nie doszukując się wpierw rozwiązania na własną rękę). Pozdrawiam i proszę o pomoc.

2
kury = kury + kury/5;
koszt_kur = koszt_kur + ( (kury/5)*18 );

Brawo. Pani miała 1000 kur. Kupiła 200 nowych, ale koszt tych nowych liczysz jako 1200/5 * 0.18

0

Dzięki, zmieniłem to na

if ( (i % 30) == 0){
zakup = kury/5;
kury = kury + zakup;
koszt_kur = koszt_kur + ( zakup*18 );
}

ale realny zysk jest wciąż grubo na minusie.

1

kury*0,9 separator dziesiętny to kropka, przecinek oznacza że ignorowane są wszystkie wartości oprócz skrajnie lewej. Więc ty tu mnożysz po prostu przez 0. Równie dobrze mogłoby być kury*0,1,2,3,4,5,6,7,8,9 i efekt byłby taki sam ;]

0

Wielkie dzięki za szybką pomoc. Tak jak myślałem, wina paru głupich błędów. Będę na nie teraz bardziej uczulony.

1

mówisz o zadaniu z poprzedniej matury? Ja rozwiązałem to zadanie przy użyciu Excela. Całość jest prostsza niż Ci się wydaje

0

Tak, zgadza się. Chciałem w C++ zrobić dla treningu :) ale widać, że to typowo pod excel przez konieczność zrobienia wykresu w podpunkcie d. jakieś rady przed rozszerzoną informatyką, skoro zdawałeś?

1 użytkowników online, w tym zalogowanych: 0, gości: 1