1 / 10

Ödevlerin en iyi ÇÖZÜMLERİ

Ödevlerin en iyi ÇÖZÜMLERİ. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN. Ödev: OBEB (Ortak Bölenlerin En Büyüğü) ve EKOK (En Küçük Ortak Kat) algoritmalarını yazınız. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN.

sunila
Télécharger la présentation

Ödevlerin en iyi ÇÖZÜMLERİ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ödevlerinen iyiÇÖZÜMLERİ ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  2. Ödev: OBEB (Ortak Bölenlerin En Büyüğü) ve EKOK (En Küçük Ortak Kat) algoritmalarını yazınız. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  3. EBOB hesabında Öklit yöntemi Büyük sayıyı bul. Büyüğü küçüğe böl. Kalanını al. Kalan diğer sayı olsun. Büyük sayıyı bul. Büyüğü küçüğe böl. Kalanını al. Kalan diğer sayı olsun. Kalan sıfır olana kadar devam et. Son bölen ebob olur. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  4. Örnek 1 program obeb; uses wincrt; var i, j : integer; begin write ('iki sayı gir : '); read (i, j); while i <> j do if i > j then i := i - j else j := j - i; writeln ('OBEB : ',(i)); end. i=36, j=48 i<>j oluncaya kadar (36<>48) 36>48 değil, o zaman j=48-36=12 i=36, j=12 36<>12 36>12 öyleyse i=36-12=24 i=24, j=12 24>12 öyleyse i=24-12=12 i=12, j=12 i=j mi, EVET O halde obeb=i Başla İki sayı al (i,j) İ, j’ye eşit oluncaya kadar devam Eğer i>j, i=i-j; yoksa j=j-i Devam Son çıkan i ebob olur. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  5. Örnek 2 program obeb2; uses wincrt; var x, y: integer; function obeb(a, b: integer): integer; begin if b = 0 then obeb := a else obeb := obeb(b, a mod b end; begin write ('OBEBi alınacak iki sayı giriniz : '); read(x, y); write('OBEB : ',obeb(x, y)) end. Burada bölme sonucu kalanı gösteren mod komutu kullanılarak a,b sayılarının yerini değiştiren bir function kullanılıyor. Write (obeb(x,y)) dediğimizde iş bitiyor. Örnek 2’nin açılımı >>>>> ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  6. Örnek 2’nin açılımı Function obeb (a,b), işlemdeki obeb (b,a mod b) yani (b,a). Dikkat!..... a=192, b=72 olduğunda b=0 mi, değil O halde obeb (72,192 mod 72), yani (72,48), obeb (a,b) olduğu için a=72, b=48 b=0 mi, değil O halde obeb (48,72 mod 48), yani (48,24), obeb (a,b) olduğu için a=48, b=24 b=0 mi, değil O halde obeb (24,48 mod 24), yani (24,0), obeb (a,b) olduğu için a=24, b=0 B=0 mı? EVET. O halde obeb=a, yani obeb=24 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  7. Örnek 3 program obeb3; uses wincrt; var m,n,r : integer; function obeb (m, n: integer): integer; begin r := m mod n; if r = 0 then obeb := n else obeb := obeb(n, r) end; begin write ('İki sayı giriniz : '); read (m,n); write (m,' ve ',n,' sayılarında Obeb : ',obeb(m,n)) end. Obeb (m,n) M=75, n=35 ise R=m mod n=75 mod 35=5 R=0 değil Obeb (n,r) yani obeb (35,5) R=m mod n=35 mod 5=0 R=0 ?, Evet. O halde obeb=n=5 Burada da function kullanılıyor ama yazımı değişik! Obeb (n,r) ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  8. OBEB’e başka örnekler Program obeb4; uses wincrt; var m,n:integer; function gcd(m,n:integer):integer; var prev:integer; begin while m<>0 do begin prev:=m; m:=n mod m; n:=prev; end; gcd:=n end; begin writeln ('İki sayı giriniz : '); read (m,n); write (m,' ve ',n,' sayılarında Obeb : ',gcd(m,n)); end. Program obeb5; uses wincrt; var m,n,p,ebob:integer; function gcd(m,n:integer):integer; begin if n=0 then gcd:=abs(m) else gcd:=gcd(n,m mod n) end; begin writeln ('İki sayı giriniz : '); read (m,n); write (m,' ve ',n,' sayılarında Obeb : ',gcd(m,n)); end. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  9. EKOK hesabı algoritma ve programı program ekok; uses wincrt; var i,k,b:integer; Begin write('Küçük sayıyı giriniz :');readln(k); write('Büyük sayıyı giriniz :');readln(b); i:=b; repeat i:=i+1; until (i mod k=0) and (i mod b=0); writeln; writeln('En küçük ortak kat :',i); repeat until keypressed; End. Küçük ve büyük sayıları al. İ=büyük sayı, İ’yi birer artırarak yükselt. i mod k =0 ve i mod b=0 oluncaya kadar arttır. Her ikisi de tam bölünüyorsa ekok odur. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

  10. Program obebekok; uses wincrt; var m,n:integer; ekok:real; function gcd(m,n:integer):integer; var prev: integer; begin while m<>0 do begin prev:=m; m:=n mod m; n:=prev; end; gcd:=n end; begin writeln ('İki sayı giriniz : '); read (m,n); writeln (m,' ve ',n,' sayılarında Obeb : ',gcd(m,n)); ekok:=(m/gcd(m,n))*n; write (m,' ve ',n,' sayılarında Ekok : ',ekok:8:0) end. ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN

More Related