Професионална програма
Loading...
Filipbg avatar Filipbg 26 Точки

Largest 3 проблем с принтирането

#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    string line;
    getline(cin, line);
    istringstream lineStream(line);
    int number;
    vector<int> numbersVec;
    while(lineStream >> number)
        numbersVec.push_back(number);
    sort(numbersVec.begin(), numbersVec.end());
    for(vector<int>::iterator it = numbersVec.begin(); it != numbersVec.end(); ++it)
    cout << *it << " <= ";
    return 0;
}

Тъкмо се зарадвах че я реших без услужнения и гледам, че накрая печати <= в повече опитах се да променя цикъла от нормален към такъв с итератор, и пак същото. 

0
C++ Fundamentals 21/10/2019 17:24:54
galin_kostadinov avatar galin_kostadinov 163 Точки
Best Answer

Привет!

Това прилича повече на Task 5 – Sort Numbers.

Ако става въпрос за нея има няколко начина да го направиш:

for (vector<int>::iterator it = numbersVec.begin(); it != numbersVec.end() - 1; ++it){
    cout << *it << " <= ";
}

cout << *(numbersVec.end() - 1) << endl;

Итерираш до един преди последния елемент и след това принтираш само последния.

Ако става пъпрос за Largest 3, тогава там няма <=

Поздрави!

0
Filipbg avatar Filipbg 26 Точки

Да за Sort Numbers става въпрос. Обърках името защото и на Largest 3 имам проблем и смятах да отварям нова тема за нея. Та за това което ми каза работи. Явно трябва отделно да се принтират за да не се добавя автоматично <= след крайното число. Дълго време се чудех и никъде не намерих инфо за такава грешка. За Largest 3 ми гърмяха 4ти и 5ти тест. Но сега пробвах с double вместо с int и мина. В примерите на Largest 3 има само цели числа и мислех че задачата се състои само от integers. 

1
galin_kostadinov avatar galin_kostadinov 163 Точки

Ако искаш може да ги проваш и със set.

За Largest_3:

std::set<double, std::greater<double>> numbers;

За Sort Numbers:

std::set<double> numbers;

Поздрави!

0