Zadanie 9 - Czytanie plików

Na najbliższych zajęciach zajmiemy się czytaniem oraz zapisywaniem do plików. Szczerze polecam przećwiczyć przed zajęciami poniższy krótki program:

1. Proszę stworzyć program, który losuje liczby rzeczywiste od 0 do 2, po czym zapisuje je do pliku tekstowego (w jednej kolumnie).

Następnie program powinien wczytywać liczby z uprzednio zapisanego pliku i wyświetlać wyniki na ekranie.

2. Należy powyższy program podzielić na klasy: należy stworzyć klasę Losowanie, która posiada metodę double Losuj(double min, double max) która zwraca liczbę rzeczywistą wylosowaną z przedziału (min, max).

Ponadto należy stworzyć drugą klasę, PlikTekstowy z metodami odpowiednio:

  • void ZapiszSlowo(string nazwa_pliku, string slowo),
  • void ZapiszLiczbe(string nazwa_pliku, double liczba),
  • string CzytajSlowo(string nazwa_pliku),
  • double CzytajLiczbe(string nazwa_pliku),
  • void WypiszPlik(string nazwa_pliku),

 

Losowanie liczb (generator liczb pseudolosowych)

#include <cstdlib>
#include <ctime>

Najpierw ustawiamy ziarno:

srand(seed);

zazwyczaj, używając do tego zegara systemowego:

srand(time(NULL));

Następnie generujemy liczby używając funkcji:

int a = rand();

gdzie funkcja rand() zwraca liczbę całkowitą z przedziału od 0 do RAND_MAX.

#include <fstream>

Zapisywanie do pliku:

ofstream ofile;

ofile.open("file.txt");

ofile<<”aaa”<<123<<endl;

ofile.close();

 

Wczytywanie z pliku (np. liczby):

fstream ifile;

ifile.open(argv[1]);

while(ifile>>val)
{
    cout<<"val: "<<val<<endl;

}

ifile.close();

 

Funkcja main

Najprostszą postacią funkcji main jest:

int main(){

return 0;

}

Ale za domyślną/standardową uzajemy:

int main(int argc, char **argv){

return 0;

}

Gdzie:

argc - liczba parametrów, z którymi został wywołany program

**argv - tablica parametrów (każdy jako char*):

argv[0] - nazwa programu

argv[1], argv[2]... - kolejne parametry wywołania programu

 

Np. wywołanie programu program mogło by mieć formę:

./program Ala 2 3

Wtedy:

argc == 4

argv[0] == "program"

argv[1] = "Ala"

argv[2] == "2"

argv[3] == "3"

Przyporządkowanie tych parametrów wykonuje się samoistnie w momencie wywołania programu, jedynym wkładem programisty jest zadeklarowanie funkcji main w formie int main(int argc, char **argv).