Написать функцию, находящую пару чисел, сумма которых меньше заданного числа - C (СИ)
Формулировка задачи:
Здравствуйте,помогите пожалуйста решить задачу. Требуется написать функцию,принимающую введенное число и затем произвольную последовательность чисел( до тех пор пока пользователь не введет -1 ). Функция проверяет есть ли во введенной последовательности пара чисел сумма которых меньше заданного числа . Если да - функция возвращает 1, если нет - 0. Пример : заданное число - 8, последовательность - 7,2,8,10,5,6,2,-1 . Функция остановится на 5 , т.к. 2+5<8. Я написал вот такой код :
Какую последовательность я бы ни вводил выдает 1. Где я ошибся ?
Заранее спасибо за помощь
#include <stdio.h>
#include <math.h>
int sum_of_num(int k,int a,int flag,int temp,int sum);
void main()
{
int a,k,flag,temp,sum;
sum = 0;
flag = 0;
temp = 0;
printf("Please enter the integer number: ");
scanf("%d", &k);
printf("Please enter the integer number: ");
scanf("%d", &a);
printf("%d\n", sum_of_num(k,a,flag,temp,sum));
}
int sum_of_num(int k, int a, int temp, int flag, int sum)
{
while (a != -1)
{
printf("Please enter the integer number: ");
scanf("%d", &a);
temp = a;
sum = temp + a;
if (sum < k) {
flag = 1;
break;
}
}
return flag;
}Решение задачи: «Написать функцию, находящую пару чисел, сумма которых меньше заданного числа»
textual
Листинг программы
int sum_of_num(int k,int first)
{
int a=0, sum=0;
while (a != -1)
{
printf("Please enter the integer number: ");
scanf("%d", &a);
sum = a+first;
if (sum < k)
return 1;
}
return 0;
}
Объяснение кода листинга программы
- Входные данные: k (число), first (число).
- Переменная
aинициализируется значением 0. - Переменная
sumинициализируется значением 0. - Запускается цикл while, который выполняется до тех пор, пока значение переменной
aне станет равным -1. - Внутри цикла пользователю предлагается ввести целое число.
- С помощью функции scanf значение введенного числа сохраняется в переменной
a. - Переменная
sumполучает значение суммы переменныхaиfirst. - Если значение переменной
sumменьше k, то функция возвращает 1. - Если значение переменной
sumбольше или равно k, то цикл продолжается. - Если значение переменной
aстало равным -1, то цикл завершается. - Функция возвращает 0.