Maz Diaz
Maz Diaz

Reputation: 61

Checking if an array has a negative and duplicate numbers in it

I'm trying to check to see how many negative numbers in an arrays and check if there's any duplicate numbers in the same array.

Here's the code that I'm using:

#include<stdio.h>

int main()
{
int n = 0;
int negative_count = 0;
int duplicate_count = 0;
// input lenght of the array
scanf("%d", &n);
getchar();
int arr[n];
for(int i = 0;i < n;i++){
    //input elements of the array
    scanf("%d", &arr[i]);
    getchar();
}

int len = sizeof(arr) / sizeof(arr[0]);

for(int i=0;i<len;i++){
    if(arr[i] < 0){
        negative_count++;
    }
    for(int j= i+1;j<len;j++){
        if(arr[i] == arr[j]){
            duplicate_count++;
        }
    }
}

printf("Number of negative numbers: %d\n", negative_count);
printf("Number of duplicates: %d", duplicate_count);

return 0;
}

Input

5
1 -1 2 3 -3

output

Number of negative numbers: 2
Number of duplicates: 0

the output for the negative number is correct, but the output for the duplicate is not what I wanted. It should've output 2 because 1 and -1 boht have the number one, and so does 3 and -3. How should I go about this?

Upvotes: 0

Views: 117

Answers (2)

Maz Diaz
Maz Diaz

Reputation: 61

I fixed my code and it works, just need to use the abs() function for comparing the array. And I also got rid of some unnecesarry code.

Here's the new code:

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

int main()
{
int n = 0;
int negative_count = 0;
int duplicate_count = 0;

// input length of the array
scanf("%d", &n);
int arr[n];

for(int i = 0;i < n;i++){
    //input elements of the array
    scanf("%d", &arr[i]);
}

for(int i=0;i<n;i++){
    if(arr[i] < 0){
        negative_count++;
    }
    for(int j= i+1;j<n;j++){
        if(abs(arr[i]) == abs(arr[j])){
            duplicate_count++;
        }
    }
}

printf("Number of negative numbers: %d\n", error_count);
printf("Number of duplicates: %d", duplicate_count);

return 0;
}

Upvotes: 0

Daniel
Daniel

Reputation: 34

If you actually want 1 and -1 to count as the same number you should use the abs() function to use the absolute value when searching for "duplicates".

abs(-1) = 1
abs(1) = 1


-1 == 1               returns false
abs(-1) == abs(1)     returns true

also remember to include <stdlib.h> to use abs()

Upvotes: 1

Related Questions