Mam do napisania program, który ma wczytywać plik tekstowy, a następnie wyświetlać z posortowanymi alfabetycznie wyrazami i liczbą wystąpień danego wyrazu.
To co na razie udało mi się stworzyć:
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <cctype>
#include <algorithm>
using namespace std;
////////////////////////////////////////////////////////
void sort_alfa (string *t, int r)
{
for (int i = r - 1; i > 0; i--) // tzw. sortowanie b¹belkowe, bêdziemy sortowaæ wiersze, tak aby ich znaki w pierwszej kolumnie by³y poustawiane alfabetycznie (zgodnie z rosn¹cym kodem ASCII)
{
for (int k = 0, j; k < i; k++)
{
j = 0;
string temp; // zmienna pomocnicza, u¿ywana przy zamianie wyrazów
while (t [k][j] == t [k+1][j]) // dopóki pierwsza litera wyrazu jest równa pierwszej literze wyrazu nastêpnego
{
j++;
}
if (t [k][j] > t [k+1][j])
{
temp = t [k];
t [k] = t [k + 1];
t [k + 1] = temp;
}
}
}
}
///////////////////////////////////////////////////////
int liczba_znakow;
//////////////////////////////////////////
int main()
{
string nazwa;
char znak;
string tekst;
cout << "Podaj nazwe pliku do wyswietlenia: ";
cin >> nazwa;
ifstream plik(nazwa.c_str());
vector<string> linie;
if (plik.is_open())
{
while (getline(plik, tekst,' '))
{
linie.push_back(tekst);
}
// vector<string>::iterator i;
// for (i = linie.begin(); i < linie.end(); i++)
// {
// cout << *i << endl;
// }
}
else
{
cout << "Plik nie moze zostac otwarty.";
}
cout<<linie[1];
for (int i = linie.size() - 1; i > 0; i--) // tzw. sortowanie b¹belkowe, bêdziemy sortowaæ wiersze, tak aby ich znaki w pierwszej kolumnie by³y poustawiane alfabetycznie (zgodnie z rosn¹cym kodem ASCII)
{
for (int k = 0, j; k < i; k++)
{
j = 0;
string temp; // zmienna pomocnicza, u¿ywana przy zamianie wyrazów
while (linie [k][j] == linie [k+1][j]) // dopóki pierwsza litera wyrazu jest równa pierwszej literze wyrazu nastêpnego
{
j++;
}
if (linie [k][j] > linie [k+1][j])
{
temp = linie [k];
linie [k] = linie [k + 1];
linie[k + 1] = temp;
}
}
}
cout<<endl;
cout<<linie[2];
cout<<endl;
system("PAUSE");
return 0;
}
Sortowanie nie działa, reszta sprawna.
Pozostanie mi jeszcze stworzenie tablicy obrazującej powtórzenia wyrazów, ale najpierw muszę mieć posortowane te wyrazy.