Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Obsługa plików, przepisywanie danych z jednego do drugiego pliku

Ostatnio zmodyfikowano 2017-01-03 20:01
Autor Wiadomość
CTRL85
Temat założony przez niniejszego użytkownika
Obsługa plików, przepisywanie danych z jednego do drugiego pliku
» 2017-01-03 16:41:54
Mam za zadanie posortować dane w pliku, które są w formacie:

2 //liczba wg której mam sortować
jakiś napis
c
12 233 4 4
1 2 3 4 5
1 2 3 4
5 5 6 7 8


No i mam pewien problem, a mianowicie nieskończoną pętlę, część kodu zamieszczam poniżej:

C/C++
int TempNumber = 0;
bool writed = false;
t1.clear();
t1.flush();
t1.seekg( 0 );

t2.close();
t2.open( temp2.c_str(), ios::in | ios::out | ios::trunc ); // usuwanie zawartości pliku 2, t1 oraz f1 były otwarte wcześniej
t2.clear();
t2.flush();
t2.seekg( 0 );
while( !t1.eof() ) { //tutaj jest pętla nieskończona
    t1 >> TempNumber; //pobieranie z pliku t1 wartości wg któej bloki danych mają być sortowane
    if( TempNumber < number ||( TempNumber > number && writed == true ) ) { // jeśli numer pobrany z t1 jest mniejszy niż numer z f1 (pobieram w innym miejscu, to działa dobrze) lub gdy jest większy, ale już blok danych jest wstawiony
        t2 << TempNumber; //zapisz do pliku numer
        for( int i = 0; i < 7; i++ ) {
            getline( t1, temp );
            t2 << temp << "\n";
        } // zapis całego bloku danych z t1 do t2, tutaj jest problem
    }
    if( TempNumber > number && writed == false ) {
        writed = true;
        t2 << number;
        for( int i = 0; i < 7; i++ ) {
            getline( f1, temp );
            t2 << temp << "\n";
        }
    }
}

Mianowicie, jeśli zostanie spełniony warunek drugi, to przy kolejym obiegu pętli i spełnieniu pierwszego if'a mam nieskończoną pętlę i do pliku zapisuje się nieskończenie wiele linii.
P-155887
mokrowski
» 2017-01-03 16:59:46
W ten sposób tego nie zrobisz. Wczytaj linie podzielone na pola do vectora i posortuj.
P-155888
CTRL85
Temat założony przez niniejszego użytkownika
» 2017-01-03 17:02:16
Nie mogę używać wskaźników, referencji, tablic, klas ani dynamicznego przydziału pamięci.
P-155889
mokrowski
» 2017-01-03 17:20:53
Wiesz co, to lepiej napisz czego możesz użyć. Będzie łatwiej odpowiedzieć. Np. tablic możesz? Iteratora możesz? Sort'a także masz napisać sam czy możesz użyć z <algorithm>? string'i znane i możliwe do użycia?
P-155890
CTRL85
Temat założony przez niniejszego użytkownika
» 2017-01-03 17:31:26
Z plików nagłówkowych to tylko iostream, fstream i string.

Tablic też nie można.

Zastanawia mnie strasznie czemu mój pomysł nie działa.
P-155891
mokrowski
» 2017-01-03 17:54:50
Ok, w kodzie masz taki bałagan i tyle błędów że nie wiadomo do czego się odnieść. Po pierwsze proszę opisz dokładniej co chcesz uzyskać. Te 2 to 2 kolumna ma być? Co to jest "c"? Podaj jakieś przykłady prawidłowego działania programu. Postaram się pomóc.
P-155893
CTRL85
Temat założony przez niniejszego użytkownika
» 2017-01-03 18:05:44
W jednym pliku mam powiedzmy takie dane:

3 //wg tego sortuje
napis trzeci
c
    1    234  56.789
     0   12  3.45
    1      6      -7.89
   1  123   0
1 //wg tego sortuje
napis pierwszy
a
    0    123  12.11
     0   12  1.12
    0      2      -2.22
   0  121   0
2 //wg tego sortuje
napis drugi
b
    1    334  3.3444
     1   34  3.43
    1      4      -4.34
   1  234   0

Mam napisać funkcję, która posortuje zawartość tego pliku, bez użycia klas, pamięci dynamicznej, typów wskaźnikowych i referencyjnych, tablic, mając do dyspozycji z plików nagłówkowych iostream, fstream, string. Mam do dyspozycji dwa dodatkowe pliki na których mogę działać.

Chciałem to zrobić na zasadzie
- pobierz liczbę i jeśli jest większa niż największa dotychczasowa, to po prostu przepisać do drugiego pliku
- jeśli jest mniejsza niż najmniejsza dotychczas, to zawartość drugiego przepisać do trzeciego, wstawić blok danych na początek do drugiego i zawartość trzeciego przepisać do drugiego
- jeśli jest pomiędzy, to przenieść część danych z drugiego do trzeciego, wstawi tam aktualny blok danych, dopisać resztę
P-155895
mokrowski
» 2017-01-03 18:14:43
Proszę:
pliki danych -> wynik

Bez żadnych komentarzy. Bo nie mogę zrozumieć co i jak chcesz sortować.
P-155896
« 1 » 2
  Strona 1 z 2 Następna strona