Определить, через сколько лет население первой страны превзойдет население второй страны - 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, ожидает возвращения значения и выводит его на экран
- Программа завершается после нажатия клавиши
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д