მაქვს ესეთი, ერთი შეხედვით მარტივი ამოცანა, მაგრამ ვერ ავაწყე კოდი რატომღაც.
მაქვს 5 ცვლადი: a - პირველი შესაკრები (= 1), b - მეორე შესაკრები, c - ჯამი (=0), d - ეტალონი, რომელსაც უნდა შედარდეს c და i ცვლადი იტერაციისთვის)
ა-სი და b-ს შეკრების შედეგად მიღებული c უნდა შევადარო d-ს, რომელიც ვთქვათ 4-ის ტოლია. თუ c ნაკლებია ოთხზე, უნდა მოხდეს a-სა და b-ს ახლიდან შეკრება, ოღონდ b-ს უნდა დაემატოს a ( c = a + (b + a)) იმდენჯერ, სანამ c საბოლოოდ არ გახდება d-ს ტოლი.
და რაც მთავარია: პროგრამამ იტერაციით უნდა დაითვალოს, რამდენჯერ გახდა საჭირო b ცვლადისთვის a-ს დამატება, ანუ რამდენი ციკლი გახდა საჭირო იმისთვის, რომ c გამხდარიყო d-ს ტოლი.
ვცადე გამომეყენებინა do-while ციკლი, მაგრამ რაღაც არ გამოდის...
აქაა კოდი (C++)
int main()
{
int i = 0;
int a = 1, b = 0, c = 0;
c = a + b;
int d = 4;
if ( c == d)
cout<<"End"<<endl;
else if (c < d)
{
do{
c = a + (b + a);
i++;
}while (c == d);
cout<<i<<endl;
}
return 0;
პროგრამა პასუხად მიწერს 1-ს, არა და ამ ამოცანიდან გამომდინარე უნდა წერდეს 4-ს...
ეს ამოცანა არის მარტივი სქემა, რომლის მიხედვითაც დიდი პროგრამა უნდა ავაგო... შეიძლება ძალიან მარტივია, მაგრამ რატომღაც გამიჭირდა
იქნებ დამეხმაროთ