#c #arrays #function #math #iteration
#c #массивы #функция #математика #итерация
Вопрос:
Я работаю над назначением. Мое задание состоит в том, чтобы: Написать программу для поиска наименьшего положительного целого числа, которое не отображается в массиве и не может быть сформировано суммой двух чисел в массиве.Используйте функции-
int issumof2(int data[], int size, int number)
int inarray(int data[], int size, int number) (размер — это количество элементов в массиве, а данные берутся у пользователя)
Я действительно застрял на том, как это исправить. Я не знаю, как использовать обе функции вместе, чтобы найти число. На этом p
#include <stdio.h>
//function declaration
int issumof2(int data[], int size, int number);
int inarray(int data[], int size, int number);
int i, data[7], size = 7, sum, n=0 number=0;
int main()
{
printf("Enter 7 numbers ");
for (i = 0; i < size; i )
scanf("%d", amp;data[i]);
//function call
inarray(data, size, number);
issumof2(data, size,number);
printf("Number is %dn", issumof2(data, size,number));//this is most likely wrong
return 0;
}
int issumof2(int data[], int size, int number)//add all combinations of data
{
inarray(data, size, number); //calling inarray to check that number isn't in data
{
for (j = i 1; j < size; j )//professor told me to use j<i but it doesn't work for some reason
{
sum = data[i] data[j];//gets the sum
if (number != sum amp;amp; number != data[i])
{
number = data[i] 1 number;
number ;
data[i] ;//moving on to the next data
}
}
}
return number;//this is also returning number??
}
int inarray(int data[], int size, int number)//check if number is in array
{
if (n <=size)
{
if (number != data[i])
number = data[i] 1 n;
n ;
data[i] ;//moving on to the next data
}
return number;//this is returning number
}
expected output:
Enter 7 numbers
1 2 2 3 4 3 1
Smallest positive Integer = 9
Комментарии:
1.
inarray(data, size, number)
предполагается, что возвращает true или false в зависимости от того, находится лиnumber
в массиве. Вам нужно вызвать его в цикле. И аналогично дляissumof2()
.2. Вызов
inarray
довольно бессмыслен, если вас не волнует возвращаемое значение.
Ответ №1:
Структура вашей main()
функции должна быть такой:
int main()
{
printf("Enter 7 numbers ");
for (i = 0; i < size; i )
scanf("%d", amp;data[i]);
while (inarray(data, size, number) || issumof2(data, size, number)) {
number ;
}
printf("Number is %dn", number);
return 0;
}
Затем вам нужно написать функции inarray()
и issumof2()
, чтобы они возвращали, true
если условие выполнено для данного числа, false
в противном случае. Они не должны искать число самостоятельно. Я оставляю это как упражнение для вас.