Przykład 1
//*************************************************************************
// PROGRAM WCZYTUJE Z PLIKU TEKSTOWEGO LICZBY. TE LICZBY SA PO DWIE W
// JEDNYM WIERSZU, A ODDZIELONE SA OD SIEBIE SPACJA np. 24 567
// - oblicza ich Największy Wspolny Dzielnik: NWD
// - czyni to wykorzystując algorytm Euklidesa z odejmowaniem
// - zapisuje do pliku NWD
//*************************************************************************
// UWAGA przypominam o sprawdzeniu pliku nwd.txt i poprawnym go zapisaniu - kursor ustawic -zeby nie bylo pustego wiersza bo zle wyniki
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int a; // zmienna na wczytana 1 liczbe ze strumienia danych czyli z pliku
// poniewaz nie interesuja mnie cyfry tej liczby tylko wartosc liczby to //deklaruje ja jako int
int b; // zmienna na wczytanie 2 liczby z tego samego wiersza danych
ifstream odczyt("nwd.txt"); // definicja obiektu odczyt z wywolaniem konstruktora i //konstruktor otwiera plik do odczytu
ofstream zapis("wynik_nwd.txt"); // definicja obiektu zapis z wywolaniem //konstruktora i konstruktor otwiera plik do zapisu
while(!odczyt.eof()) // dopóki nieprawda, ze natrafilismy na koniec pliku
{
odczyt>>a; // czyta pierwsza liczbe z wiersza w pliku
odczyt>>b; // czyta druga liczbe z wiersza w pliku (pomija spacje, ktora je rozdziela)
while (a!=b) // tutaj jest algorytm Euklidesa czyli od linii 38 do 44
{
if (a>b)
a=a-b;
else
b=b-a;
}
zapis<<a<<endl; // a lub b mozna zapisac bo w wyniku dzialania algorytmu // a=b=NWD
}
odczyt.close();
zapis.close();
return 0;
}
Przykład 2
//*************************************************************************
// PROGRAM WCZYTUJE LICZBY Z PLIKU TEKSTOWEGO. LICZBY SA PO DWIE W JEDNYM
// WIERSZU, A ODDZIELONE SA OD SIEBIE SPACJA np. 24 12
// - pierwsza liczba jest licznikiem ulamka, druga liczba jego mianownikiem
// - oblicza ich Największy Wspolny Dzielnik: NWD
// - czyni to wykorzystując algorytm Euklidesa z dzieleniem
// - zapisuje do pliku wartosc licznika i mianownika po skroceniu (po podzieleniu // przez NWD)
//*************************************************************************
#include<iostream> // #include to dyrektywa preprocesora
#include<fstream>
using namespace std; // uzywamy przestrzen nazw std
int main()
{
int a;
int b;
int c; // zmienna pomocnicza, w ktorej bede przechowywac poczatkowa wartosc a, //jest potrzebna bo wartosc a jest ciagle zmieniana w programie
int d; //zmienna pomocnicza, w ktorej bede przechowywac poczatkowa wartosc b, //jest potrzebna bo wartosc b jest ciagle zmieniana w programie
ifstream odczyt("nwd.txt");
ofstream zapis("skrocony.txt");
while(!odczyt.eof())
{
odczyt>>a; //licznik ulamka
odczyt>>b; //mianownik ulamka
c=a; // przypisuje zmiennej c poczatkowa wartosc a
d=b; // przypisuje zmiennej d poczatkowa wartosc b
// nizej jest algorytm Euklidesa z dzieleniem czyli od linii 39 do 43
while (a>0) // dopoki a jest wieksze od zera, bo gdy a=0 to NWD=b
{
a=a%b; // przypisuje zmiennej a wynik operacji matematycznej: a modulo b
b=b-a;
} // po ukonczeniu algorytmu mam w zmiennej b wartosc NWD,
// natomiast zmienna a przyjela wartosc zero
c=c/b; // skracam licznik przez NWD
d=d/b; // skracam mianownik przez NWD
zapis<<c<<" "<<d<<endl;
}
odczyt.close();
zapis.close();
return 0;
}