алгоритм с sort плохо работает

243
12 мая 2022, 08:50

Написал алгоритм который должен сортировать числа в порядке возрастания. Ввод через 1 строку. В строке входный чисел их не более 100000. Работает, но с ошибкой. Не проходит 1 тест. Входные данные вводяться в 1 строку, числа отделяються одним пробелом. В данном случае правильно работает только при введении чисел между которыми только один пробел, но я еще делал, чтобы оно работало несмотря на количество пробелов, но всёравно не проходит тест тот самый тест, который и не проходил, неправильный результат. Делал еще и с массивом, ситуация такая же.

#include <iostream>
#include <vector>
#include <string>
#include <cmath>
#include <algorithm>
using namespace std;
int main() {
    string n;
    long int k = 0;
    long int symbolcount;
    vector<int> vec;
    getline(cin, n);
    while (n.length())
    {
        vec.push_back(atoi(n.c_str()));
        symbolcount = log10(vec[k]) + 2;
        n.erase(0, symbolcount);
        k++;
    }
    sort(vec.begin(), vec.end());
    for (int i = 0; i < vec.size(); i++)
    {
        printf("%d ", vec[i]);
    }
}
Answer 1

Можете использовать istringstream. Просто инициализируете его Вашей строкой, а потом используйте его как cin для извличения чисел.

#include <iostream>
#include <sstream>
#include <vector>
#include <string>
#include <algorithm>
// #include <iterator>
using namespace std;
int main()
{
    string input;
    getline(cin, input);
    istringstream stream(input);
    vector<int> vec;
    
    // Заполнение вектора
    int temp;
    while (stream >> temp)
    {
        vec.push_back(temp);
    }
    // Или так
    // copy(istream_iterator<int>(stream), istream_iterator<int>(), back_inserter(vec));
    sort(vec.begin(), vec.end());
    for (int i = 0; i < vec.size(); i++)
    {
        cout << vec[i] << '\t';
    }
    // Или так
    // copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, "\t"));
    return 0;
}
READ ALSO
fstream в Visual studio

fstream в Visual studio

Пытаюсь я считать число из файла и сразу же вывести его в консоль, а выводиться неинициализированный участок памяти, а все данные из файла...

154
Поиск минимума в очереди C++

Поиск минимума в очереди C++

Реализую поиск минимума в очереди, но столкнулся с проблемой, что на больших массивах слишком долго работаетПодскажите, пожалуйста, можно...

178
Помощь с меткой

Помощь с меткой

Поставленная задача:

271
Что такое ошибки времени исполнения?

Что такое ошибки времени исполнения?

Расскажите пожалуйста, что такое ошибки времени исполнения? Когда они возникают? Если можно, то хотелось бы посмотреть на примерах кода на C/C++И...

207