Hej, mam problem z jednym zadaniem które rozwiązuję sobie dla ćwiczeń.
Wszystko idzie dobrze aż do momentu, kiedy wchodzi pętla. Wiem, że na pewno są błędy, prawdopodobnie z moim rozumowaniem, dlatego uprzejmie proszę - jeśli byłaby taka możliwość - o wskazówki w którą stronę iść. Treść zadania brzmi:
Sadownik zebrał w pierwszym roku owocowania sadu X ton jabłek. W kolejnym roku zbiory wyniosły 50% zbiorów z poprzedniego roku, w kolejnym – 205% z roku go poprzedzającego, itd. na przemian. Napisz program obliczający po ilu latach owocowania sadu łączne zyski sadownika (licząc od początku) wyniosą co najmniej K zł i jakie faktycznie wówczas będą, zakładając że zysk na 1 tonie jabłek jest stały i wynosi Z zł (X, Z i K mają być pobierane od użytkownika, przy czym X i Z to liczby rzeczywiste nieujemne, a K – liczba całkowita nieujemna). Przykład: dla X=10, Z=50 i K=5000 wynikiem jest 13 lat i kwota 5370.65 zł.
Co udało mi się osiągnąć to tej pory:
#include <iostream>
using namespace std;
int main()
{
int K, ile_lat; //K-zyski po latach, ile_lat zajmie
float X, Z, ostateczna_kwota; //X tony, Z zysk na jablkach/tona
cout<<"Podaj ilosc jablek w tonach z pierwszego roku: ";
cin>>X;
while(X<1)
{
cout<<"Ilosc ton nie moze byc liczba ujemna. Podaj liczbe ton: ";
cin>>X;
if(X>1)
continue;
}
cout<<"Podaj jaki jest zysk z tony jablek: ";
cin>> Z;
while(Z<1)
{
cout<<"Zysk nie moze byc liczba ujemna. Podaj zysk z jablek: ";
cin>>Z;
if(Z>1)
continue;
}
cout<<"Podaj zysk do sprawdzenia: ";
cin>>K;
while(K<1)
{
cout<<"Zysk nie może byc liczba ujemna. Podaj zysk do sprawdzenia: ";
cin>> K;
if(K>1)
continue;
}
ile_lat=0;
ostateczna_kwota=0;
for(int i=ostateczna_kwota; i<=K; i=i+i)
{
int X2=X*0.5;
i=Z*X2;
ile_lat++;
if(i==K || i>K)
break;
for(int j=i; j<=K; j=j+i)
{
int X3=X2*2.05;
j=X3*Z;
ile_lat++;
if(j==K || j>K)
break;
}
}
cout<<"Ostateczna zarobiona kwota wyniesie: "<<ostateczna_kwota+Z<<"zl\n";
cout<<"Wydarzy sie to po: "<<ile_lat<<" lat\n";
return 0;
}