Удалить последний напечатанный элемент из консоли - PullRequest
1 голос
/ 13 июля 2020

ВОПРОС Для двух несортированных массивов A размера N и B размера M различных элементов задача состоит в том, чтобы найти все пары из обоих массивов, сумма которых равна X.

 **INPUT**
    1
    5 5 9
    1 2 4 5 7
    5 6 3 4 8


**EXPECTED OUTPUT** 1 8, 4 5, 5 4

**MY OUTPUT**   1 8, 4 5, 5 4,

МОЙ КОД

#include<bits/stdc++.h>
using namespace std;
void Pair(int *a, int*b, int n, int m, int sum) {
    map<int, int>mp;
    for (int i = 0; i < n; i++) {
        int x = a[i];
        for (int i = 0; i < m; i++) {
            if ((sum - x) == b[i])
                mp[x] = b[i];
        }
    }

    for (auto x : mp) {
        cout << x.first << " " << x.second << ",";
         
    }
  
}
int main() {

    int  test ;
    cin >> test;
    for (int i = 0; i < test; i++) {
        int  a[1000000];
        int  b[1000000];
        int  n, m, sum;
        cin >> n >> m >> sum;
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }
        for (int i = 0; i < m; i++) {
            cin >> b[i];
        }
        Pair(a, b, n, m, sum); 
       
        cout << endl;
    }
    return 0;
}

Я уже пробовал / b / b, но здесь он не работает Я не знаю, почему, пожалуйста, помогите мне распечатать правильный вывод и также предложите мне лучший способ сделать это

Мне нужно удалить последнюю напечатанную запятую.

Ответы [ 2 ]

2 голосов
/ 13 июля 2020
bool first = true;
for (auto x : mp)
{
    if (!first)
    {
        cout << ", ";
    }
    cout << x.first << " " << x.second;
    first = false;
}
1 голос
/ 13 июля 2020

Замените это:

    for (auto x : mp) {
        cout << x.first << " " << x.second << ",";
         
    }

на:

    auto it = mp.begin();
    auto end = mp.end();
    for (; it != end; ++it) {
        cout << (*it).first << ' ' << (*it).second;
        if ( std::next(it, 1) != end) { // check if next is end
            cout << ", "; //if not, print a comma
        }
    }

Примечание: Не включать <bits/stdc++>

...