Прохожу курс cs50, задача звучит так:
ЗадачаComplete the implementation of population.c, such that it calculates the number of years required for the population to grow from the start size to the end size.
Your program should first prompt the user for a starting population size.
If the user enters a number less than 9 (the minimum allowed population size), the user should be re-prompted to enter a starting population size until they enter a number that is greater than or equal to 9.
Say we have a population of n llamas. Each year, n / 3 new llamas are born, and n / 4 llamas pass away.
For example, if we were to start with n = 1200 llamas, then in the first year, 1200 / 3 = 400 new llamas would be born and 1200 / 4 = 300 llamas would pass away. At the end of that year, we would have 1200 + 400 - 300 = 1300 llamas.
To try another example, if we were to start with n = 1000 llamas, at the end of the year, we would have 1000 / 3 = 333.33 new llamas. We can’t have a decimal portion of a llama, though, so we’ll truncate the decimal to get 333 new llamas born. 1000 / 4 = 250 llamas will pass away, so we’ll end up with a total of 1000 + 333 - 250 = 1083 llamas at the end of the year.
Мое решение: так как цикл продолжается до тех пор пока сумма рассчитанная по формуле x=n+(n/3)-(n/4) где n это кол-во популяции на старте, меньше чем кол-во популяции в конце, то к-во итерации = кол-во лет, нужных для достижения кол-ва конечной популяции.
Код:
#include <cs50.h>
#include <stdio.h>
int start_int();
int end_int();
int calculate();
int main(void) {
int i = start_int();
int j = end_int(i);
int h = calculate(j, i);
}
// prompt the user for a starting population size
int start_int(void) {
int y;
do {
y = get_int("set starting population size: ");
} while (y < 9);
return y;
}
// prompt the user for an ending population size
int end_int(start_int) {
int x;
do {
x = get_int("set ending population size: ");
} while (x < start_int);
return x;
}
int calculate(start_int, end_int) {
int k;
int n = 0; //счетчик
do {
k = start_int + (start_int / 3) - (start_int / 4);
} while (k < end_int);
{
n++; //инкремент счетчика
start_int = k; //подмена полученной суммы на "start_int"
return start_int; //возврат замененного значения
}
printf("%i", n); //не выводит сумму итераций
}
где printf("%i", n);
не выводит сумму итераций
результат
~/ $ ./population
set starting population size: 1200
set ending population size: 1300
Подскажите пожалуйста, в чем может быть проблема?