Определить, через сколько лет население первой страны превзойдет население второй страны - C (СИ)
Формулировка задачи:
Задача такая: Не подскажите, что тут неправильно?
Население 2-х стран равно N1 и N2, соответственно прирост P1 и P2. Население N1 < N2, а P1 >P2. Определить, через сколько лет население первой страны превзойдет население второй страны.
Код я как бы написала, программа компилируется, но результат не выводится почему-то.#include <stdio.h>
#include <conio.h>
#include <locale.h>
int proverka(int n1, int n2, int p1, int p2);
int calculation (int n1, int n2, int p1, int p2);
int main ()
{
setlocale (LC_ALL, "russian");
int n1, n2,p1,p2;
printf("Введите население первой страны");
scanf_s ("%d", &n1);
printf("Введите население второй страны");
scanf_s ("%d", &n2);
printf("Введите прирост первой страны");
scanf_s ("%d", &p1);
printf("Введите прирост второй страны");
scanf_s ("%d", &p2);
int calculation ();
_getch ();
}
int proverka(int n1, int n2, int p1, int p2)
{
if (n1<n2) return 1;
if (p1>p2) return 1;
else return 0;
}
int calculation (int n1, int n2, int p1, int p2)
{
int y=0;
do
{
y=y+1;
n1=n1+p1*y;
n2=n2+p2*y;
if (n1>n2)
{
return y;
printf ("%d", y);
}
}
while (n1<n2);
}Решение задачи: «Определить, через сколько лет население первой страны превзойдет население второй страны»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <locale.h>
int proverka(int n1, int n2, int p1, int p2);
int calculation (int n1, int n2, int p1, int p2);
int main ()
{
setlocale (LC_ALL, "russian");
int n1 = 0, n2 = 0, p1 = 0, p2 = 0;
printf("Введите население первой страны");
scanf_s ("%d", &n1);
printf("Введите население второй страны");
scanf_s ("%d", &n2);
printf("Введите прирост первой страны");
scanf_s ("%d", &p1);
printf("Введите прирост второй страны");
scanf_s ("%d", &p2);
if (!proverka(n1, n2, p1, p2)) {
printf("ERROR: invalid input data\n");
} else {
printf("Years count = %d\n", calculation(n1, n2, p1, p2));
}
_getch ();
}
int proverka(int n1, int n2, int p1, int p2)
{
return (n1 < n2 && p1 > p2);
}
int calculation (int n1, int n2, int p1, int p2)
{
int y=0;
while (n1 <= n2) {
y += 1;
n1 += p1;
n2 += p2;
}
return y;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются функции proverka и calculation
- Устанавливается локальная настройка на русский язык
- Задаются начальные значения переменных n1, n2, p1, p2
- Выводится приглашение для ввода данных
- Считываются данные с помощью функции scanf_s
- Проверяется корректность введенных данных с помощью функции proverka
- Если данные некорректны, выводится сообщение об ошибке
- Если данные корректны, вычисляется количество лет до превзойдения населения первой страны второй
- Используется функция printf для вывода результата
- Программа ожидает нажатия клавиши для завершения работы
- Функция proverka проверяет корректность входных данных (население первой страны не должно быть меньше населения второй страны, а прирост первой страны должен быть больше прироста второй)
- Функция calculation вычисляет количество лет, необходимых для превзойдения населением первой страны населения второй
- Используется цикл while для вычисления количества лет
- В каждой итерации цикла значение переменной y увеличивается на единицу, а значения переменных n1 и n2 увеличиваются на значения соответствующих приростов
- По завершении цикла возвращается значение переменной y
- Код, вызывающий функцию calculation, ожидает возвращения значения и выводит его на экран
- Программа завершается после нажатия клавиши