Witam. Posiadam taki problem z moim programem, że zamiast zapisać mi wyników do plików tworzonych wcześniej zapisuje mi je do konsoli a pliki pozostają puste bez żadnych danych. Proszę o pomoc. Pozdrawiam.
Kod programu:
#include <algorithm>
#include <iostream>
#include <fstream>
using namespace std;
bool permutacja( string a )
{
int n = a.length();
int i, j; // indeksy znakow ktore bede zamieniac ze soba miejscami
while( true ) {
cout << a << endl;
i = n - 1; // Od końca słowa idąc w lewo:
// znajduje taki znak ze poprzednik jest od niego mniejszy:
while( i > 0 && a[ i - 1 ] >= a[ i ] ) i--; // dopóki poprzedni znak jest wiekszy/rowny biezacemu to idź w lewo
if( i == 0 ) break; // jeżeli nie na już znaków które można przestawić, to koniec
// będę przestawiać POPRZEDNIKA największego znaku: a[i-1]
// zamienię go z NAJMNIEJSZYM znakiem większym od niego,
// który stoi z jego prawej strony
j = i;
while( j < n && a[ j ] > a[ i - 1 ] ) j++; // szukam NAJMNIEJSZEGO znaku WIEKSZEGO od a[i-1]
j--;
swap( a[ i - 1 ], a[ j ] ); // zamieniam znaki miejscami
reverse( a.begin() + i, a.end() ); // przywracam porządek na prawo od i
}
}
int main()
{
while( true )
{
int i, j;
cout << "Podaj nazwe pliku wraz z rozszerzeniem : ";
string name;
getline( cin, name ); // wczytaj nazwe
if( !name.length() ) break; // koniec jeżeli pusty plik
ifstream fin( name.c_str() ); // otwieramy plik
if( fin ) // jeżeli się udało otworzyć
{
string line;
while( getline( fin, line ) ) // wczytaj wiersz
{
string outname( line + ".txt" ); // złóź nazwę
ofstream fout( outname.c_str() ); // stwórz plik
if( fout ) // jeżeli udało się stworzyć plik
{
cout << "" << endl;
cout << "\tUtworzono plik o nazwie \"" + outname + "\"" << endl;
cout << "" << endl;
string perm( line );
sort( perm.begin(), perm.end() ); // posortuj litery
cout << "" << endl;
cout << "Jesli chcesz zakonczyc wcisnij ENTER";
cout << "" << endl;
while( true )
{
if( perm != line ) fout << perm << endl; // jeżeli to nie nazwa pliku
if( permutacja( perm ) )
fstream( outname.c_str(), ios::out | ios::app );
break; // jeżeli brak nastepnej permutacji to koniec
}
}
else cout << "Plik \"" + outname + "\" nie daje sie stworzyć" << endl << endl; // jeżeli NIE udało się stworzyć plik
}
cout << endl;
}
else cout << "Nie mozna otworzyc pliku \"" + name + "\"" << endl << endl; // jeżeli NIE udało się otworzyć
}
}