У меня проблемы с форматированием оператора печати с использованием вложенного цикла for - PullRequest
0 голосов
/ 14 мая 2019

Я беру жестко закодированную информацию о двух массивах и создаю их объединение, пересечение и различие.

Моя проблема в том, что я не могу напечатать пересечение или разницу в правильном формате.

Я пробовал различные циклы while с операторами for и if, но не могу его получить. Я знаю, что я близок. (Надеюсь)

Основная информация:

int setA[] = {3,4,9,12,13,15};
int setB[] = {1,3,5,7,9};

int lenA = sizeof(setA) / sizeof(setA[0]); 
int lenB = sizeof(setB) / sizeof(setB[0]);

Difference(setA, setB, lenA, lenB);
Intersection(setA, setB, lenA, lenB);



void Intersection(int setA[], int setB[], int lenA, int lenB)
{
cout << "AnB = {";

for (int i = 0; i < lenA; i++)
{
    for (int j = 0; j < lenB; j++)  
    {
        while(setA[i] == setB[j] && i < lenA - 1)
        {
            cout << setA[i++] << ", ";
        }

        if(i < lenA && setA[i] == setB[j])
        {
            cout << setA[i++];
        }
    }   
}

cout << "}";
cout << endl;

}

void Difference(int setA[], int setB[], int lenA, int lenB)
{

cout << "A - B = {";

for (int i = 0; i < lenA; i++)
{
    bool comp = false;              

    for (int j = 0; j < lenB; j++)

        if (setA[i] == setB[j])
        {
            comp = true;
            break;  
        }

    if(!comp)
    {
        cout << setA[i] << ",";
    }
}

cout << "}";
cout << endl;
}

Я хочу, чтобы вывод выглядел следующим образом:

AnB = {3, 9} (пересечение)

A-B = {4, 12, 13, 15} (разница)

Что я получаю:

AnB = {3, 9,} (пересечение)

A-B = {4, 12, 13, 15,} (разница)

Мне просто нужно исправить запятые в конце, но не знаю как.

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

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