Pobranie danych z pliku, odczytanie wierszy i posortowanie danych

0
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cctype>
using namespace std;

int main()
{
	ifstream StaryPlik;
	ofstream NowyPlik;

	char sciezka[100];
	cout << "Podaj sciezke do pliku: ";
	cin.getline(sciezka, 100);
	StaryPlik.open(sciezka);
	if(!StaryPlik.is_open())
	{
		cout << "Nie udalo sie otworzyc pliku!";
		return 0;
	}
	cout << "Podaj sciezke do pliku wyjsciowego: ";
	cin.getline(sciezka, 100);
	
	int zawartosc;
	//zliczanie ile plik ma lini
	int lw = 0; //liczba wierszy
	while(!StaryPlik.eof())
	{
		if(StaryPlik >> zawartosc == "\n")
		lw++;
	}

	int *tablica = new int[lw];

	while(!StaryPlik.eof())
	{
		for(int i=0;i<lw;i++)
		{
			StaryPlik >> tablica[i];
		}
	}


	for(int i=lw-1;i>0;i--)
	{
		for(int j=0;j<i;j++)
		{
			if(tablica[j]>tablica[j+1])
				swap(tablica[j], tablica[j+1]);
		}
	}
	
	NowyPlik.open(sciezka);

	for(int i=0;i<lw;i++)
	{
		NowyPlik << tablica[i] << endl;
	}

	cin.get();
	cin.get();

	return 0;
}

kod dziala ale w pliku wyjsciowym nie ma zadnych danych, kiedy deklarowalem tablice np 10 elementowa i plik wejsciowy mial 10 liczb bylo ok ale jak chcialem zrobic dynamiczna tablice o wielkosci tj ilosc wierszy w pliku to sie nic nie wyswietla.
Co poprawic zeby dzialalo tak jak nalezy.

0

zapoznaj sie z czyms takim jak debugger. krok po kroku mozesz podpatrywac zmienne (watch) i patrzec co sie dzieje.

blad znajdziesz sam ;)

0

Cześć,
pewnie dodałeś kolejne czytanie ze StaryPlik i teraz po przejsciu pierwszego while-a

while(!StaryPlik.eof())

jesteś na końcu strumienia, pasuje go zresetować:

StaryPlik.clear( );
StaryPlik.seekg( 0, std::ios::beg );

1 użytkowników online, w tym zalogowanych: 0, gości: 1