Neobjektové oblasti

// Zapis 10 celych cisiel do suboru a ich opatovne nacitanie zo suboru neznamej velkosti
// Pouzijeme prud ifstream (konstruktor ma sice 3 parametre,
// musime ale zadat iba prvy - meno suboru).

#include <iostream>
#include <fstream>

using namespace std;

const char* meno = "cisla.txt";

void Chyba()
{
cerr << "nepodarilo sa otvorit subor " << meno << endl;
exit(1);
}

void main()
{
// zapis do suboru
ofstream F(meno);
if(F)
{ // ak sa podarilo subor otvorit ...
for(int i = 0; i < 10; i++)
F << i << endl ;
F.close();
}
else Chyba();

// citanie zo suboru
ifstream G(meno);
int i;
while(G >> i)
{
cout << i << endl;
}
G.close();
}


















// Vytvorte program, ktory spocita pocet viet vo vstupnom subore Napíšte funkciu pocet(), ktorá spočíta riadky vo vstupnom textovom súbore. Vstupom do funkcie bude meno súboru.
#include <iostream>
#include <fstream>
using namespace std;

const char* subor = "param.txt";

int pocet(const char* subor);

void main()
{
cout << "Pocet riadkov v subore \""<< subor << "\" je " << pocet(subor) << endl;
}

int pocet(const char* subor)
{
int pocet = 0;
char riadok[81];
ifstream f;

f.open(subor);

while(f.getline(riadok,80))
{
pocet++;
}
f.close();
return pocet;
}




// Pretazenie funkcie počet
Príklad 2.3 Upravte funkciu pocet() z príkladu 2. tak, že pridáte ďalší parameter typu char. Podľa hodnoty druhého parametra ( r / s) funkcia vráti počet riadkov alebo počet slov v súbore. Preťažte funkciu počet tak, aby vrátila počet znakov vo vstupnom reťazci, ak nebude zadaný druhý parameter.
#include <iostream>
#include <fstream>
//#include <string>
using namespace std;
const char* subor = "c:/cvika/param.txt";

int pocet(const char* subor);
int pocet(const char* subor, char c );

void main()
{
// citanie zo suboru

cout << "Pocet riadkov v subore je " << pocet(subor,'r') << endl;

cout << "Pocet slov v subore je " << pocet(subor,'s') << endl;

cout << "Pocet pismen v slove je " << pocet(subor) << endl;

}

int pocet(const char* subor, char c)
{
int pocet = 0;
char riadok[81];
char slovo[21];
ifstream f(subor);

if (c == 'r')
{
//while(getline(f, string(riadok),'\n'))
while(f.getline(riadok,80))
{
pocet++;
}
}
else if (c == 's')
{
while(f >> slovo)
{
pocet++;
}
}
f.close();
return pocet;
}

int pocet(const char *slovo)
{
int pocet = 0;

while(*(slovo++))
{
pocet++;
}
return pocet;
}