samedi 11 juillet 2020

Checking for duplicates in an array using for loop

I am trying to check whether there is any duplicate integer in the user input array. The problem is that the validation of the duplicate does not work properly and I have no idea why it is not showing the desired output. Following is the code:

#include <iostream>

using namespace std;

int main()
{
    int length;
    int arrValue;

    cout << "Enter the length : ";
    cin >> length;

    int *arr = new int[length];

    cout << "Enter " << length << " integers for array : ";

    for(int i = 0; i < length; i++)
    {
        cin >> arr[i];
    }

    cout << "Array : ";

    for(int i = 0; i < length; i++)
    {
        arrValue = arr[i];
    
        for(int k = i + 1; k < length; k++)
        {
            if(arr[i] == arr[k])
            {
                cout << "Duplicate found" << endl;
                break;
            }
            else
            {
                cout << arrValue << " ";
            }
        }
    }

   delete[] arr;
}

Current result (assuming no duplicate in user input):

Enter the length: 5
Enter 5 integers for array : 5 4 3 2 1
Array : 5 5 5 5 4 4 4 3 3 2

Expected result (assuming no duplicate in user input):

Enter the length: 5
Enter 5 integers for array : 5 4 3 2 1
Array : 5 4 3 2 1

Current result (assuming duplicate in user input):

Enter the length: 5
Enter 5 integers for array : 5 4 4 2 1
Array : 5 5 5 5 Duplicate found 4 4 3

Expected result (assuming duplicate in user input):

Enter the length: 5
Enter 5 integers for array : 5 4 4 2 1
Array : Duplicate found

I believe my loops is the source to the problem. The current result output 10 times and I do not understand why there will be so many same numbers appearing.

Do note that I am trying to apply the validation using loop only and not from C++ standard library.

Aucun commentaire:

Enregistrer un commentaire