Хотел бы спросить правильный алгоритм кода к этой задаче?

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

void main()
    {
        char ch[80];
        ifstream in("text1.txt");
        if (!in) {
            cout << "fail" << endl;
        }
        ifstream fin("text1.txt");
        if (in)
        {
            int i = 0;
            do {
                i++; 
                if (i > 0) {
    
                }
                if (i < 0) {
    
                }
               in.eof();
            } while (!in.eof());
    
            ofstream fout("text1_copy.txt");
            fout << fin.rdbuf();
            fout.close();
            fin.close();
        }
    }

Ответы (1 шт):

Автор решения: Harry

Как уже задолбали этой задачей с разных аккаунтов...

#include <vector>
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    vector<double> pos, neg;
    int zeros = 0;
    double x;

    for(ifstream in("text.txt"); in >> x; )
    {
        if (x > 0) pos.push_back(x);
        else if (x < 0) neg.push_back(x);
        else zeros++;
    }

    ofstream out("text_copy.txt");
    for(double x : pos) out << x << "\n";
    for(int i = 0; i < zeros; ++i) out << 0.0 << "\n";
    for(double x : neg) out << x << "\n";
}

Формат вывода (в строку, табличкой, количество знаков), защиту от дурака (нет файла, в нем не числа) - допишите сами.

→ Ссылка