Program nie wyświetla danych z tablicy

0

Napisałem program, który wczytuje dane z pliku tekstowego i ma je posortować. Kompiluje się ale nie wyświetla danych.

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
	cout << "Podaj nazwe pliku: ";
	char sciezka[20];
	cin >> sciezka;
	fstream Plik;
	Plik.open(sciezka);

	if(!Plik.good())
	{
		cout << "Nie udalo sie otworzyc pliku! ";
	}
	else
	{
		cout << "Plik zostal otwarty pmyslnie.\n ";
	}


	int lw = 0;
	string wyraz;

	//obliczenie liczby wierszy
	while(!Plik.eof())
	{
		getline(Plik, wyraz);
		lw++;
	}

	cout << "Liczba wierszy w pliku: " << lw << endl;

	string *tab = new string[lw];

	//wpisanie danych do tablicy
	for(int i=0;i<lw;i++)
	{
		Plik >> tab[i];
	}

	//wypisanie nieposortowanych danych
	cout << "Nieposortowany plik: " << endl;
	for(int i=0;i<lw;i++)
	{
		cout << tab[i] << endl;
	}
	
	//sortowanie danych
	for(int j=lw-1;j>0;j--)
	{
		for(int i=0;i<j;i++)
		{
			swap(tab[i], tab[i+1]);
		}
	}


	//wypisanie danych posortowanych
	for(int i=0;i<lw;i++)
	{
		cout << tab[i] << endl;
	}

	Plik.close();
	delete[] tab;
	cin.get();
	cin.get();

	return 0;
}
0
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    cout << "Podaj nazwe pliku: ";
    string sciezka;
    cin >> sciezka;

    fstream Plik;
    Plik.open((sciezka+".txt").c_str(), ios::in | ios::out);

    if(!Plik.good())
    {
        cout << "Nie udalo sie otworzyc pliku! ";
    }
    else
    {
        cout << "Plik zostal otwarty pmyslnie.\n ";
    }


    int lw = 0;
    string wyraz;

    //obliczenie liczby wierszy
    while(!Plik.eof())
    {
        getline(Plik, wyraz);
        lw++;
    }

    cout << "Liczba wierszy w pliku: " << lw << endl;

    string *tab = new string[lw];
    Plik.close();
    Plik.open((sciezka+".txt").c_str(), ios::in | ios::out);
    //wpisanie danych do tablicy
    int i=0;
    while(!Plik.eof())
    {
        getline(Plik, wyraz);
        tab[i]=wyraz;
        i++;
    }
    //wypisanie nieposortowanych danych
    cout << "Nieposortowany plik: " << endl;
    for(int i=0;i<lw;i++)
    {
        cout << tab[i] << endl;
    }

    //sortowanie danych
    for(int j=lw-1;j>0;j--)
    {
        for(int i=0;i<j;i++)
        {
            swap(tab[i], tab[i+1]);
        }
    }


    //wypisanie danych posortowanych
    for(int i=0;i<lw;i++)
    {
        cout << tab[i] << endl;
    }

    Plik.close();
    delete[] tab;
    cin.get();
    cin.get();

    return 0;
}

Teraz działa lecz kod który dopisałem wygląda beznadziejnie xD

0

Dzieki, napisalem cos w podobie doslownie przed chwila, osobno utworzylem drugi fstream i do niego wczytalem.

0
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;

namespace detail{
	template<typename StringType>
	struct line{ 
		using string_type = StringType;
		string_type data;
		friend istream &operator>>(istream &is, line<string_type> &l){
	    	return getline(is, l.data);
		}
		operator string() const{
			return data;
		}
	};
}

int main(){
	auto printContainerElements = [](const auto &container){
		for(const auto &element : container)
			cout << element << endl;
	};
	vector<string> lines;
	using line_type = detail::line<string>;
	using istream_iterator_type = istream_iterator<line_type>;
	copy(
		istream_iterator_type(cin),
		istream_iterator_type(),
		back_inserter(lines)
	);

	cout << "{Elements count? " << lines.size() << "}" << endl;

	cout << "[Sort - before]" << endl;
	printContainerElements(lines);
		
	sort(begin(lines), end(lines));
	
	cout << "[Sort - after]" << endl;
	printContainerElements(lines);
	
	return 0;
}

W przypadku operowania na innym pliku niż tym, jakim jest standardowe wejście musisz zamienić cin na inny strumień.

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