Če zaporedje zlogov v datoteki sestavlja zloge, ki predstavljajo ASCII kod, govorimo o tekstovnih datotekah.
Inicializacija na začetku programa
while (!dat.eof()) – dokler ni konec datoteke
inicializacija pred začetkom pregledovanja
vrstice
branje vrstice v niz
pregledovanje niza do konca vrstice
inicializacija pred začetkom tvorjenja besede
tvorjenje besede
finalizacija po tvorjenju besede
finalizacija po pregledovanju vrstice
finalizacija po pregledovanju datoteke
Napišite program, ki bo prebral vhodno tekstovno datoteko. Program naj prešteje število besed v datoteki, število znakov, število vrstic in izračuna povprečno število besed na vrstico in povprečno število črk na besedo. Program naj tudi v vsaki lihi besedi zamenja male in velike črke. Tako spremenjen tekst naj program izpiše na zaslon.
#include<fstream.h>
#include<istream.h>
#include<ctype.h>
#include <stdlib.h>
void ZamenjajMaleInVelike(char *bes,int dolzina);
void IzpisiBesedo(char *bes,int dolzina);
void main()
{
char ime_dat[30];
cout << "\tVpisi ime datoteke: ";
cin.getline(ime_dat,30,'\n');
ifstream dat(ime_dat);
char znak, prejsnji_znak;
char beseda[30];
long st_znakov_v_besedi, st_znakov = 0, st_besed = 0, st_vrstic=0;
long st_znakov_v_besedah = 0;
while (!dat.eof())
{
znak = dat.get();
if (znak=='\n') st_vrstic++;
st_znakov_v_besedi=0;
while (isalpha(znak) && isalnum(znak))
{
beseda[st_znakov_v_besedi] = znak;
st_znakov_v_besedi++;
st_znakov++;
prejsnji_znak=znak;
if (!dat.eof())
znak = dat.get();
}
if (isspace(znak) || (!isalnum(znak)))
{
if ( isalnum(prejsnji_znak))
{
st_besed++;
if (st_besed % 2 == 1) //ce je beseda liha
ZamenjajMaleInVelike(beseda,st_znakov_v_besedi);
IzpisiBesedo(beseda,st_znakov_v_besedi);
st_znakov_v_besedah+=st_znakov_v_besedi;
}
cout << znak;
prejsnji_znak=znak;
st_znakov++;
}
} // konec While
cout << endl << "\tStevilo besed: " << st_besed;
cout << endl << "\tStevilo vseh znakov: " << st_znakov;
cout << endl << "\tStevilo vrstic: " << st_vrstic;
cout << endl << "\tPovprecno stevilo besed na vrstico je: "
<< (float)(st_besed) / st_vrstic;
cout << endl << "\tPovprecno stevilo crk v besedi je: "
<< (float)(st_znakov_v_besedah) / st_besed;
cout << endl;
}