RonCajan
RonCajan

Reputation: 139

How to get the sum of two index in an array in C?

Im making a code for an array that has a dynamic size and filling the array manually.Then, it will print. It will also ask for a number and finding the index that is equal to the two indexes.

I using codeblocks for this code. Id tried for loop to find the two indexes that is eqaul to the inputed number.

#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);
}

I expect the output:

Index 1 and 5 are eqaul to the inputed number. but it gives error.

Upvotes: 1

Views: 2460

Answers (2)

Alok Garg
Alok Garg

Reputation: 174

The final loop in printArray is basically iterating through the array one element both upwards & downwards at the same time.

So, for n=6, if sum of either (a[0]+a[5]), (a[1]+a[4]) or (a[2]+a[3]) does not equal the required number , it would show up as unmatched.

This loop should be replaced by a nested loop so that inner loop iterates from j=i+1 to size-1 to allow check for a[i]+a[j] == num for all possible permutations of array indexes.

Upvotes: 0

sri
sri

Reputation: 357

To begin with, the following bug is one of the problem -

scanf("%d",num);

should be -

scanf("%d", &num);

Upvotes: 1

Related Questions