Как получить сумму двух индексов в массиве в C? - PullRequest
0 голосов
/ 23 января 2019

Я создаю код для массива, который имеет динамический размер, и заполняю массив вручную. Затем он напечатает. Он также запросит число и найдет индекс, равный двум индексам.

Я использовал кодовые блоки для этого кода. Я попытался в цикле найти два индекса, которые соответствуют введенному числу.

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

void printArray(int *array, int size) {
    printf("["); 
    for (int i = 0; i < size - 1; i++) {
        printf("%i,", array[i]);

    }
    if (size >= 1)
        printf("%i", array[size-1]); 
        printf("]\n");

    int num;
    printf("Enter number to be calculate: ");
    scanf("%d",num);

    for(int i= 0; i < size - 1; i++){
        if (array[i] + array[size-1] == num){
            printf("%d  %d", array[i],array[size-1]);
        }
        size--;
    }
}

int main(void) {
    int count;
    int num;
    int sum;
    printf("Enter the size of the array:\n");
    scanf("%d", &count);

    int *array = malloc(count * sizeof(*array));
    if (!array) {
        printf("There was a problem you entered");
        exit(EXIT_FAILURE);
    }

    printf("Enter the elements of the array:\n");
    for (int i = 0; i < count; i++)
    scanf("%d", &array[i]);

    printArray(array, count);
}

Я ожидаю выхода:

Индексы 1 и 5 соответствуют приведенному числу. но это дает ошибку.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Последний цикл в printArray, по сути, выполняет итерацию по одному элементу массива одновременно вверх и вниз.

Таким образом, для n = 6, если сумма либо (a [0] + a [5]), (a [1] + a [4]), либо (a [2] + a [3] ]) не равно требуемому номеру, оно будет отображаться как несоответствующее.

Этот цикл должен быть заменен вложенным циклом, чтобы внутренний цикл повторялся от j = i + 1 до size-1, чтобы разрешить проверку для a [i] + a [j] == num для все возможные перестановки индексов массива.

0 голосов
/ 23 января 2019

Начнем с того, что следующая ошибка - одна из проблем -

scanf("%d",num);

должно быть -

scanf("%d", &num);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...