Видимость и логические выражения в циклах C ++ - PullRequest
0 голосов
/ 09 апреля 2020
#include <iostream>
#include <iomanip>
#include <ctime>

using namespace std;

void fillArray(int arr[], int size, int min, int max)
{
    for (int i = 0; i < size; i++)
    {
        arr[i] = rand() % (max - (min) + 1) + (min); 
    }
}

void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
    {
        cout << "|" << setw(3) << arr[i];
    }
    cout << "|" << endl;
}

bool in_array(int *pArr, int n, int elem)
{
    for (int i = 0; i < n; ++i)
    {
        if (pArr[i] == elem)
            return true;
    }
    return false;
}

int main()
{
srand (time(0));
int arr_a [20];
int c_size = 0;
int *arr_c = new int [c_size];

fillArray(arr_a,20,1,9);
printArray(arr_a,20);


for (int i = 0; i < 20; i++)
{
int reqCount = 0;
    for (int j = 0; j < 20; j++)
    {
        if (arr_a [i] == arr_a [j])
        {
            reqCount++;
        } 
    }
    for (int j = 0; j < c_size ; j++)
    {
        if (reqCount == 2 && in_array(arr_c, c_size, arr_c[i]) != in_array(arr_c, c_size, arr_c[j]))
        {
            arr_c[c_size++] = arr_a[i];
        } 
    }
}
cout << "Result: " << endl;
printArray (arr_c,c_size);
delete[] arr_c;
return 0;
}

Привет, стек. Мой вопрос по поводу кода выше: почему сейчас я получаю только пустые результаты.

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

Но это не работает должным образом. Можете ли вы указать мою ошибку, пожалуйста, чтобы я мог понять, почему она ничего не показывает.

Мой вывод должен содержать только числа, которые существуют только в двух примерах в arr_a.

// Я пытался его найти в Google. Но я не смог найти подобных примеров для моего. Извините, если я не тороплюсь :(

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...