Implementacja w C++


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;     

}