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

Zapisywanie liczb do pliku txt - problem

Ostatnio zmodyfikowano 2012-12-31 13:40
Autor Wiadomość
mizuri332
Temat założony przez niniejszego użytkownika
Zapisywanie liczb do pliku txt - problem
» 2012-12-31 13:15:41
Mam do napisania program w którym użytkownik podaje n liczb do tablicy, liczby te zostają wyświetlone, posortowane malejąco a następnie zapisane do pliku txt. Problem w tym, że w tym pliku zapisuje mi sie tylko ostatnia liczba posortowanego ciągu, tzn jeśli podaje cyfry: 3,5,1,6 to po sortowaniu mamy: 6,5,3,1 i w pliku txt zapisuje sie TYLKO ostatnia cyfra z tego ciągu, czyli 1.

Proszę o pomoc jak mam to naprawić, bo nie bardzo mam czas żeby nad tym siedzieć i sie głowić dzisiaj, w c++ jestem amatorem totalnym. Wiem że program nie ma żadnych zabezpieczeń, on ma po prostu działać a nie sprawdzać co użytkownik podaje. Poniżej zamieszczam kod:

C/C++
#include <cstdlib>
#include <iostream>
#include <fstream>
using namespace std;
int main( int argc, char * argv[] )
{
    int i, n;
    int tab[ i ];
   
    cout << "Ile liczb ma zawierac plik: ";
    cin >> n;
    cout << "Podaj " << n << " liczb: " << endl;
    for( i = 0; i < n; i++ )
         cin >> tab[ i ];
   
    cout << "Twoje liczby to: ";
    for( i = 0; i < n; i++ )
         cout << tab[ i ] << ", ";
   
    cout << endl << "Twoje posortowane liczby to: ";
    do {
        for( i = 0; i < n - 1; i++ ) {
            if( tab[ i ] > tab[ i + 1 ] ) {
                swap( tab[ i ], tab[ i + 1 ] );
            }
        }
        n = n - 1;
        cout << tab[ i ] << ", ";
    } while( n > 0 );
   
    fstream zapisz( "plik.txt", ios::out );
   
    zapisz << tab[ i ] << endl;
    zapisz.flush();
    zapisz.close();
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
}
P-72495
mizuri332
Temat założony przez niniejszego użytkownika
» 2012-12-31 13:40:59
Wstyd, mój problem okazał sie prostszy niż miślałem :X Ale tak to jest jak sie siedzi do 02:00 w nocy nad programami, ma sie otwarte kwejki, wykopy i inne rozpraszacze, a na drugi dzień oczekuje sie gotowego rozwiązania ;]

Wystarczy na końcu w tej dużej pętli do while dopisać petle for:
C/C++
for( i = 0; i <= n; i++ ) {
    i = n;
    zapisz << tab[ i ] << endl;
    zapisz.flush();
}
P-72500
« 1 »
  Strona 1 z 1