E-gradiva > Računalništvo > Programiranje > Načrtovanje in razvoj programskih aplikacij > Vhodno-Izhodni tokovi > Podatkovne zbirke > Tekstovne datoteke

Prijava

Tekstovne datoteke

 

Č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

 

 

 

Primer:

 

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.

 

 

 

  1. #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;


    }