если сумма 2 чисел в массиве равна другому числу (не в массиве)

#arrays #c #reverse

Вопрос:

Я пытаюсь написать программу, которая собирает массив чисел размером 10 и другое число. Программа проверит, есть ли в массиве два числа, чтобы их сумма совпадала с числом, которого нет в массиве. Если это так, программа выведет 2 числа, если нет, программа выведет нет.

Это то, что я делал до сих пор:

 #include <stdio.h>
void main()
{
    int array[10], number;
    for (int i; i < 10; i  )
    {
        scanf("%d", amp;array[i]);
    }
    scanf("%d", amp;number);
}
 

Я не знаю, как продолжать дальше. Кто-нибудь может помочь, пожалуйста?

Спасибо 🙂

Ответ №1:

Эта программа должна соответствовать вашим потребностям. Он не печатает пару дважды (например arr[1] arr[2] , и arr[2] arr[1] ) и не принимает одно и то же число, умноженное на два (например arr[3] arr[3] ). Я включил в код некоторые комментарии, которые помогают это объяснить.

 #include <stdio.h>
#include <stdlib.h>

int main(void)
{
    /* set your own `sum` and `arr` */
    int sum = 14;
    int arr[] = {1, 4, 6, 3, 2, 8, 5, 7, 3, 9};
    /* calculate size of `arr` */
    size_t size = sizeof(arr) / sizeof(int);

    for (int i = 0; i < size;   i) {
        /* start from `i   1` */
        for (int j = i   1; j < size;   j) {
            /* check if the sum is right */
            if (arr[i]   arr[j] == sum)
                printf("%d   %d = %dn",
                       arr[i], arr[j], sum);
        }
    }

    return EXIT_SUCCESS;
}
 

С учетом вышесказанного sum и arr вывод программы будет:

 6   8 = 14
5   9 = 14
 

Комментарии:

1. Если этот ответ решил вашу проблему и вы ее понимаете, пожалуйста, отметьте его как принятый.