Определить, через сколько лет население первой страны превзойдет население второй страны - 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяются функции proverka и calculation
  3. Устанавливается локальная настройка на русский язык
  4. Задаются начальные значения переменных n1, n2, p1, p2
  5. Выводится приглашение для ввода данных
  6. Считываются данные с помощью функции scanf_s
  7. Проверяется корректность введенных данных с помощью функции proverka
  8. Если данные некорректны, выводится сообщение об ошибке
  9. Если данные корректны, вычисляется количество лет до превзойдения населения первой страны второй
  10. Используется функция printf для вывода результата
  11. Программа ожидает нажатия клавиши для завершения работы
  12. Функция proverka проверяет корректность входных данных (население первой страны не должно быть меньше населения второй страны, а прирост первой страны должен быть больше прироста второй)
  13. Функция calculation вычисляет количество лет, необходимых для превзойдения населением первой страны населения второй
  14. Используется цикл while для вычисления количества лет
  15. В каждой итерации цикла значение переменной y увеличивается на единицу, а значения переменных n1 и n2 увеличиваются на значения соответствующих приростов
  16. По завершении цикла возвращается значение переменной y
  17. Код, вызывающий функцию calculation, ожидает возвращения значения и выводит его на экран
  18. Программа завершается после нажатия клавиши

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы