TO jest plik h odnoszący się do funkcji
Kod: Zaznacz cały
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
struct Salfa
{
char litera;
int ile;
Salfa *nast;
};
void fglowna();
void sprawdzaj(string &dane);
void wczytaj(Salfa *&pierwszy);
void ile_lit(Salfa *pierwszy, string dane);
void drukuj (Salfa *pierwszy);
void zapisz (Salfa *pierwszy);
void usuwanie (Salfa *pierwszy);
Kod: Zaznacz cały
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <string.h>
#include <ctype.h>
using namespace std;
#include "funkcje.h"
void fglowna()
{
string dane;
sprawdzaj(dane);
Salfa *pierwszy;
wczytaj(pierwszy);
ile_lit(pierwszy, dane);
drukuj(pierwszy);
zapisz(pierwszy);
usuwanie(pierwszy);
cout<<endl;
}
//-------------------------------------------------------------------
//funkcja wczytujaca po kolei litery z pliku(az do konca pliku)
// alfabet i tworzaca z nich liste jednokierunkowa
void sprawdzaj(string &dane){
ifstream plik;
do {
cout << "Podaj nazwe istniejacego pliku z danymi: " ;
cin >> dane;
plik.open(dane.c_str() );
if (!plik. is_open() )
plik. clear();
} while (!plik.is_open());
}
void wczytaj(Salfa *&pierwszy)
{
ifstream plik("alfabet.txt");
Salfa *ost,*akt;
ost=akt=NULL;
//wczytuje plik z literami ktorych ma szukac
while(!plik.eof())
{
ost=akt;
akt = new Salfa;
plik>>akt->litera;
akt->ile = 0;
akt->nast=NULL;
if(ost==NULL){
pierwszy=akt;
}
else ost->nast=akt;
}
plik.close();
}
//funkcja wczytujace po kolei litery z pliku wejsciowego i zliczajca przy
//uzyciu listy stworzonej przez funkcje "wczytaj" czestotliwosc wystepowania
//danych liter
void ile_lit(Salfa *pierwszy, string dane)
{
Salfa *akt;
string wiersz;
ifstream plik;
plik.open(dane.c_str() );
akt=pierwszy;
while(!plik.eof())
{
getline (plik,wiersz);
for (int i=0;i<wiersz.length(); i++)
{
akt=pierwszy;
while(akt!=NULL)
{
if(wiersz[i]==akt->litera)
{
akt->ile++;
}
akt=akt->nast;
}
}
}
}
void drukuj (Salfa *pierwszy)
{
cout<<"Litera"<<" "<<"ile"<<endl;
while (pierwszy!=NULL)
{
cout<<pierwszy->litera<<" "<<pierwszy->ile<<" "<<endl;
pierwszy=pierwszy->nast;
}
}
//funckja zapisujaca liste do pliku wynikowego
void zapisz (Salfa *pierwszy)
{
Salfa *akt;
akt=pierwszy;
string nazwazapisu;
cout<<"podaj nazwę pliku do zapisu
";
cin>>nazwazapisu;
ofstream plik(nazwazapisu.c_str());
plik<<"litera: "<<"ile:
";
while(akt!=NULL)
{
plik<<akt->litera<<" "<<akt->ile<<"
";
akt=akt->nast;
}
};
//----------------------------------------------------------------
void usuwanie (Salfa *pierwszy)
{
Salfa *akt;
while(pierwszy!=NULL)
{
akt=pierwszy;
pierwszy=pierwszy->nast;
delete akt;
}
};
-- 5 czerwca 2011, 19:05 --
dorzucam jeszcze jedno pytanie w funkcji sprawdzaj mam coś takiego zwanego referencją
void(string &dane) moje pytanie brzmi dlaczego ten parametr musi być zapisany właśnie w ten sposób?