Задача: Коммерсант, имея стартовый капитал k, занялся бизнесом, который ежемесячно увеличивал капитал на p%. Через сколько лет* он накопит сумму s, достаточную для покупки собственного магазина?
| k | p | s | m (месяцы) | Коменнтарий: | 
| 0 | 50 | 500 | — | No money — no honey | 
| 10 | 0 | 500 | — | Это не бизнес | 
| 50 | 50 | 0 | 0 | Логично, программа работает, вводить частный случай не стал. | 
| 1000 | 5 | 500 | 9 | Пройден | 
| 30 | 15 | 500 | 21 | Пройден | 
| 30 | 150 | 500 | 4 | Пройден | 
| 5.556 | 49.04 | 193.6 | 9 | Пройден | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <iostream> double k, p, s, v, pk, m;                   // Переменные int main() {      scanf("%lg%lg%lg", &k, &p, &s);           // Вводим переменные      if(k==0){                                 // Частный случай         printf("%s", "No money - no honey");      }if(p==0){                                // Частный случай         printf("%s", "Это не бизнес");      }      if((k>0)&&(p>0)){                         // Основное     while(pk<s){                                       v = k+pk;         pk = pk + v*p/100;         m++;     }     printf("%lg", m);                          // Ответ      } return 0; } | 
Решение выполняется с помощью цикла while, который выполняет циклы пока заданное условие правда (см. 12).
Алгоритм цикла:
- Цикл работает, пока сумма сложных процентов меньше, чем сумма.
| 1 | while(pk<s) | 
2. Т.к. процент сложный, то он должен изменяться с каждым циклом. Для этого я ввел вспомогательную переменную v.
| 1 | v = k+pk; | 
где k — капитал, pk — сумма сложных процентов.
- Делаем сумму сложных процентов
| 1 | pk = pk + v*p/100; | 
- Добавляем месяцы, пока pk не станет большей или равной s.
| 1 | m++; | 
Вывод: таким образом код работает независимо от того, какой капитал, какой процент или какая сумма. Не беря во внимание частные случаи, код для своей задачи универсален.
Частные случаи:
- Когда k = 0. Такая ситуация не имеет логического значения ни в коде, ни в жизни. По этому я её обыграл с помощью if. Код не работает
- 
Когда p = 0. Аналогично первому, логики нет. Код не работает 
- 
Когда s = 0. В таком случае, магазин бесплатен. Код работает 
* — работал в месяцах, так удобней, ибо месячный процент
А вообще, время 5 утра. А я только осознал, что у меня 1.16, а не 1.6. Но пусть будет =)
 
						
Это задание Вячеслава Иванова. Сверьте ответы 🙂