algorytm.org

Implementacja w Ada



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Rozszerzony algorytm Euklidesa - Implementacja w Ada
Ocena użytkownikóww: *****  / 6
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 25 kwietnia 2006 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Euklides_rozsz.adb:
--
-- Rozszerzony algorytm Euklidesa
--
-- www.algortym.org
-- (c)2006 Tomasz Lubinski
--

with Text_IO;
use Text_IO;

procedure Euklides_rozsz is

   r, a, q, b: Integer;
   x, x1, x2: Integer;
   y, y1, y2: Integer;
   nwd_a, nwd_b, nwd: Integer;

begin

   -- set all data
   nwd_a := 153;
   nwd_b := 1326;

   -- a must be greater than b
   if (nwd_b > nwd_a) then
      nwd := nwd_b;
      nwd_b := nwd_a;
      nwd_a := nwd;
   end if;

   -- initialize a and b
   a := nwd_a;
   b := nwd_b;

   -- initialize r and nwd
   q := a/b;
   r := a - q*b;
   nwd := b;

   -- initialize x and y
   x2 := 1;
   x1 := 0;
   y2 := 0;
   y1 := 1;
   x := 1;
   y := y2 - (q-1)*y1;

   while (r /= 0) loop
      a := b;
      b := r;

      x := x2 - q*x1;
      x2 := x1;
      x1 := x;

      y := y2 - q*y1;
      y2 := y1;
      y1 := y;

      nwd := r;
      q := a/b;
      r := a - q*b;

   end loop;

   -- present results
   Put_Line("NWD(" & Integer'Image(nwd_a) & ", " & Integer'Image(nwd_b) & ") = " & 
             Integer'Image(nwd) & " = " & Integer'Image(x) & " * " & Integer'Image(nwd_a) & " + " &
             Integer'Image(y) & " * " & Integer'Image(nwd_b));

   if nwd = 1 then
      Put_Line(Integer'Image(nwd_b) & " * " & Integer'Image(y) & " mod " &
               Integer'Image(nwd_a) & " = 1");
   end if;
   
end;
Komentarze
photo
-1 # Gregory 2013-01-09 16:54
Przepraszam, a co to robi?


while (r /= 0) loop
Odpowiedz | Odpowiedz z cytatem | Cytować
photo
-1 # Witamaster 2013-01-30 12:34
pętla: dopóki r różne od 0 wykonuj..
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz