From MJanik
(Difference between revisions)
|
|
| Line 1: |
Line 1: |
| - |
| |
| | Tematem zajęć numer 3 strumienie wejściowe i wyjściowe, w tym operacje na plikach; będziemy pisać w C++. | | Tematem zajęć numer 3 strumienie wejściowe i wyjściowe, w tym operacje na plikach; będziemy pisać w C++. |
| | Więcej informacji na ten temat można znaleźć na Wykładzie 1 Prof. Zbroszczyk. | | Więcej informacji na ten temat można znaleźć na Wykładzie 1 Prof. Zbroszczyk. |
| | + | |
| | + | Dla osób zainteresowanych przećwiczeniem pisania kodu przed zajęciami zachęcam do napisania poniższego programu: |
| | + | |
| | + | |
| | + | 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(); |
Revision as of 07:51, 10 October 2025
Tematem zajęć numer 3 strumienie wejściowe i wyjściowe, w tym operacje na plikach; będziemy pisać w C++.
Więcej informacji na ten temat można znaleźć na Wykładzie 1 Prof. Zbroszczyk.
Dla osób zainteresowanych przećwiczeniem pisania kodu przed zajęciami zachęcam do napisania poniższego programu:
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();