Сортировка строки,содержащей числа,не используя стандартные библиотечные функции.C++

214
18 августа 2021, 16:30
#include <iostream>
#include <fstream>

using namespace std;
int main()
{   
    string path="my.txt";
    ifstream fin;
    fin.open(path);
    if(!fin.is_open()){cout<<"File is not opened"<<endl;}
    else{cout<<"Okey"<<endl;
        string str;
        while(!fin.eof()){
            fin>>str;
              cout<<str<<endl;
            }
                       }
    fin.close();
}
Answer 1

вообше то неправильно выполнить задание за вас, но я решил помочь вам кое в чем. Во первых нужно сравнивать строки так, чтобы сравнивались и длины строк(количество цифр в числе). Для этого нужно написать компаратор:

bool
cmp(const std::string& s1, const std::string& s2)
{
    if (s1.length() == s2.length()) {
        for (int i = 0; i < s1.length(); ++i) {
            if (s1[i] != s2[i])
                return s1[i] < s2[i];
        }
    }
    return s1.length() < s2.length();
}

Дальше с некоторыми поправками ваша программа:

ifstream fin("my.txt");    
if (!fin.is_open()) { cout << "File is not opened" << endl; }   
else
{
    cout << "Okey" << endl;
    constexpr int SIZE = 1000;
    string str, res[SIZE];
    int n = 0;      
    while (fin >> str) {            
        res[n++] = str;
    }
    /* сортируйте массив от 0 до n 
       сравнивая элементы так: if(cmp(res[i + 1], res[i])...
       альгоритм сортировки выбирайте сами(гугл вам в помощь)
    */
}
fin.close();

P.S. Было бы проще положить эти строки в какой нибудь контейнер типа sdt::multiset с соответствующим компаратором и получать их уже в отсортированном виде

READ ALSO
Для какого типа представления графа написан этот алгоритм (BFS)

Для какого типа представления графа написан этот алгоритм (BFS)

На emaxx начал изучать алгоритмыДошел до графов

121
Assertion failed: !hook.is_linked() в Boost

Assertion failed: !hook.is_linked() в Boost

Не могу понять из-за чего выскакивает исключение "Assertion failed: !hookis_linked(), file d:\boost_1_71_0\boost_1_71_0\boost\intrusive\detail\generic_hook

168
Выравнивание содержимого в блоке

Выравнивание содержимого в блоке

Есть несколько блоков div с display:inline-block; в них по картинке

175