chanu
chanu

Reputation: 33

Finding pairs in an array that are equal to an input value

I have to find out if there is any pair of i,j such that array[i]^2 + array[j]^2 == x^2 . If there are such pairs, I need to print all such (i,j). Otherwise, print “There are no such pairs”.

#include <stdio.h>
int main(){

 int size=10, i, x,j;

 int Array[size];
 printf("What is the value of x:");
 scanf("%d",&x);

 for(i=0;i<size;i++){
    printf("Enter array value :");
    scanf("%d",&Array[i]);
 }
 for(i=0;i<size;){
    for(j=i+1;j<size;j++)
        if((Array[i]*Array[i])+(Array[j]*Array[j])==x*x)  //how do I complete this for loop?

 }

    return 0;
 }

Upvotes: 1

Views: 105

Answers (1)

some user
some user

Reputation: 1775

Yo're almost there, why weren't you incrementing the value of i? Keep a counter to count the matched pairs, then print those or if nothing is found print whatever you want.

#include <stdio.h>

int main() {

    int size = 10, i, x, j;

    int Array[size];
    printf("What is the value of x:");
    scanf("%d", &x);

    for (i = 0; i < size; i++) {
        printf("Enter array value :");
        scanf("%d", &Array[i]);
    }
    int counter = 0;
    for (i = 0; i < size; i++) {
        for (j = i + 1; j < size; j++)
            if ((Array[i] * Array[i]) + (Array[j] * Array[j]) == x * x) {
                printf("%d %d\n", Array[i], Array[j]);
                counter++;
            }
    }
    if (!counter) {
        printf("There are no such pairs\n");
    }

    return 0;
}

Upvotes: 1

Related Questions