Показать дубликаты элементов из 2 отдельных массивов - PullRequest
0 голосов
/ 24 апреля 2019

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

Возьмите все элементы из 'a' и сравните их с 'b'. Если в «b» есть повторяющийся номер, отобразите этот номер (а).

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

В приведенном ниже коде число, которое должно отображаться, равно 64. Вместо этого я получаю;

Дубликат найден: -9.25596e + 0611

Дубликат найден: -9.25596e + 0612

Дубликат найден: -9.25596e + 0613

Дубликат найден: 44

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

#include "stdafx.h"
#include <iostream>

using namespace std;

int main()
{
double dupi;
double dupj;

double a[5] = { 8, 22, 24, 38, 64 };
double b[5] = { 33, 47, 58, 59, 64 };

for (int i = 0; i < 5; ++i)
{
    for (int j = 0; j < 5; ++j)
    {
        if (a[i] == b[j])

            dupi = i;
            dupj = j;

cout << "\nDuplicate found: " << dupi << dupj << endl;
    }

    }

cin.get();

return 0;
}

Дубликат найден: 64

Ответы [ 2 ]

1 голос
/ 24 апреля 2019

dupi = i; выполняется только тогда, когда (a[i] == b[j]) имеет значение true; но dupj = j; и cout << "\nDuplicate found: "... выполняются безоговорочно. Вы, вероятно, хотели добавить пару скобок. Как написано, вы печатаете значение неинициализированной переменной.

0 голосов
/ 24 апреля 2019

вам нужно поставить скобки, если условие.в противном случае будет напечатано неинициализированное значение dupi

Поскольку вам нужно дублировать значение, а не индекс, поэтому вам
следует использовать dupi =a[i]; вместо dupi = i;
следует использовать dupi =a[j];вместо dupi = j;

for (int i = 0; i < 5; ++i)
{
    for (int j = 0; j < 5; ++j)
    {
        if (a[i] == b[j]){ //use braces so that code will hit only when condition is true

            dupi = i;   //should be a[i] or b[i]
            dupj = j;   //should be a[i] or b[i]

           cout << "\nDuplicate found: " << dupi << dupj << endl;
        }  //closing braces
    }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...