Jakiś czas temu na innym forum napisałem coś podobnego do tego co potrzebujesz.
#include <iostream>
#include <string>
#include <algorithm>
#include <fstream>
using namespace std;
void generuj_dane_losowe(int* tablica, int ile)
{
srand(time(NULL));
for( int i=0; i<ile; i++ )
{
tablica[i] = rand() % 89 + 10;
}
}
void pokaz_dane(int* tablica, int ile)
{
int linia = 1;
for( int i=0; i<ile; i++ )
{
cout << tablica[i] << " ";
if ((linia + i) % 10 == 0) cout << endl;
}
}
void wczytaj_tablice_z_pliku(int* tablica, int ile, string nazwa_pliku)
{
string linia;
int i=0;
ifstream plik(nazwa_pliku);
while(getline(plik, linia))
{
tablica[i++] = stoi(linia);
}
plik.close();
}
void zapisz_tablice_do_pliku(int* tablica, int ile, string nazwa_pliku)
{
ofstream plik(nazwa_pliku);
for(int i=0; i < ile; i++)
{
plik << tablica[i] << endl;
}
plik.close();
}
int main()
{
int ile = 100;
int tablica[ile];
string plik1 = "dane1.txt";
string plik2 = "dane2.txt";
string plik3 = "dane3.txt";
cout << endl;
cout << "Generuję losowe dane do tablicy." << endl;
generuj_dane_losowe(tablica, ile);
cout << "Wygenerowane dane przed posortowaniem." << endl << endl;
pokaz_dane(tablica, ile);
cout << endl;
cout << "Zapisuję dane nieposortowane do pliku: " << plik1 << endl;
zapisz_tablice_do_pliku(tablica, ile, plik1);
// Tablic zawiera dane, ale dla Twojego przykładu, zostanie wyczyszczona
// i ponownie zostaną załadowane dane
tablica[ile] = {};
cout << "Pobieram dane z pliku: " << plik1 << " do posortowania." << endl;
wczytaj_tablice_z_pliku(tablica, ile, plik1);
cout << "Dane wczytane, zaczynam sortowanie." << endl;
cout << endl;
cout << "Tablica posortowana rosnąco" << endl;
sort(tablica, tablica+ile); // Tablica posortowana rosnąco
pokaz_dane(tablica, ile);
cout << endl;
cout << "Zapisuję dane posortowane rosnąco do pliku: " << plik2 << endl;
zapisz_tablice_do_pliku(tablica, ile, plik2);
cout << endl;
cout << "Tablica posortowana malejąco" << endl;
sort(tablica, tablica+ile, greater <int>()); // Tablica posortowana malejąco
pokaz_dane(tablica, ile);
cout << endl;
cout << "Zapisuję dane posortowane malejąco do pliku: " << plik3 << endl;
zapisz_tablice_do_pliku(tablica, ile, plik3);
return(0);
}
Demo on-line,
Funkcje generuj_dane_losowe() i pokaz_dane() zapożyczone z tego wpisu.