From MJanik
(Difference between revisions)
|
|
(5 intermediate revisions not shown) |
Line 1: |
Line 1: |
| 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: | | 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). | | 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. | | 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). | | 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: | | Ponadto należy stworzyć drugą klasę, PlikTekstowy z metodami odpowiednio: |
- | void ZapiszSlowo(string nazwa_pliku, string slowo), | + | |
- | void ZapiszLiczbe(string nazwa_pliku, double liczba), | + | void ZapiszSlowo(string nazwa_pliku, string slowo), |
- | string CzytajSlowo(string nazwa_pliku), | + | void ZapiszLiczbe(string nazwa_pliku, double liczba), |
- | double CzytajLiczbe(string nazwa_pliku), | + | string CzytajSlowo(string nazwa_pliku), |
- | void WypiszPlik(string nazwa_pliku), | + | double CzytajLiczbe(string nazwa_pliku), |
| + | void WypiszPlik(string nazwa_pliku), |
| | | |
- | Losowanie liczb (generator liczb pseudolosowych) | + | 3. Niech program będzie wywoływany w ten sposób, że pierwszy argument wywołania programu będzie nazwą pliku, do którego chcemy zapisywać. np. |
- | #include <cstdlib> | + | ./program plik.txt |
- | #include <ctime> | + | |
| + | |
| + | '''Losowanie liczb (generator liczb pseudolosowych)''' |
| + | |
| + | #include <cstdlib> |
| + | #include <ctime> |
| Najpierw ustawiamy ziarno: | | Najpierw ustawiamy ziarno: |
- | srand(seed); | + | srand(seed); |
| zazwyczaj, używając do tego zegara systemowego: | | zazwyczaj, używając do tego zegara systemowego: |
- | srand(time(NULL)); | + | srand(time(NULL)); |
| Następnie generujemy liczby używając funkcji: | | Następnie generujemy liczby używając funkcji: |
- | int a = rand(); | + | int a = rand(); |
| gdzie funkcja rand() zwraca liczbę całkowitą z przedziału od 0 do RAND_MAX. | | gdzie funkcja rand() zwraca liczbę całkowitą z przedziału od 0 do RAND_MAX. |
- | #include <fstream> | + | |
| + | |
| + | '''Wczytywanie i zapisywanie do pliku''' |
| + | #include <fstream> |
| Zapisywanie do pliku: | | Zapisywanie do pliku: |
- | ofstream ofile; | + | ofstream ofile; |
- | ofile.open("file.txt"); | + | ofile.open("file.txt"); |
- | ofile<<”aaa”<<123<<endl; | + | ofile<<”aaa”<<123<<endl; |
- | ofile.close(); | + | ofile.close(); |
| | | |
| Wczytywanie z pliku (np. liczby): | | Wczytywanie z pliku (np. liczby): |
- | fstream ifile;
| + | ifstream ifile; |
- | ifile.open(argv[1]); | + | ifile.open(argv[1]); |
- | while(ifile>>val) | + | while(ifile>>val) |
- | { | + | { |
- | cout<<"val: "<<val<<endl;
| + | cout<<"val: "<<val<<endl; |
- | } | + | } |
- | ifile.close(); | + | ifile.close(); |
| | | |
- | Funkcja main | + | |
| + | '''Funkcja main''' |
| + | |
| Najprostszą postacią funkcji main jest: | | Najprostszą postacią funkcji main jest: |
- | int main(){ | + | int main(){ |
- | return 0; | + | return 0; |
- | } | + | } |
| Ale za domyślną/standardową uzajemy: | | Ale za domyślną/standardową uzajemy: |
- | int main(int argc, char **argv){ | + | int main(int argc, char **argv){ |
- | return 0; | + | return 0; |
- | } | + | } |
| Gdzie: | | Gdzie: |
- | argc - liczba parametrów, z którymi został wywołany program | + | argc - liczba parametrów, z którymi został wywołany program |
- | **argv - tablica parametrów (każdy jako char*): | + | **argv - tablica parametrów (każdy jako char*): |
- | argv[0] - nazwa programu | + | argv[0] - nazwa programu |
- | argv[1], argv[2]... - kolejne parametry wywołania programu | + | argv[1], argv[2]... - kolejne parametry wywołania programu |
| | | |
| Np. wywołanie programu program mogło by mieć formę: | | Np. wywołanie programu program mogło by mieć formę: |
- | ./program Ala 2 3 | + | ./program Ala 2 3 |
| Wtedy: | | Wtedy: |
- | argc == 4 | + | argc == 4 |
- | argv[0] == "program" | + | argv[0] == "program" |
- | argv[1] = "Ala" | + | argv[1] == "Ala" |
- | argv[2] == "2" | + | argv[2] == "2" |
- | argv[3] == "3" | + | 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). | | 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). |
Latest revision as of 13:16, 19 March 2015
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),
3. Niech program będzie wywoływany w ten sposób, że pierwszy argument wywołania programu będzie nazwą pliku, do którego chcemy zapisywać. np.
./program plik.txt
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.
Wczytywanie i zapisywanie do pliku
#include <fstream>
Zapisywanie do pliku:
ofstream ofile;
ofile.open("file.txt");
ofile<<”aaa”<<123<<endl;
ofile.close();
Wczytywanie z pliku (np. liczby):
ifstream 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).