October 16, 2025, Thursday, 288

Języki Programowania 3

From MJanik

(Difference between revisions)
Jump to: navigation, search
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();