Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Ödevlerin en iyi ÇÖZÜMLERİ

Benzer bir sunumlar


... konulu sunumlar: "Ödevlerin en iyi ÇÖZÜMLERİ"— Sunum transkripti:

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

2 OBEB (Ortak Bölenlerin En Büyüğü) ve EKOK (En Küçük Ortak Kat)
Ö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 if i > j then i := i - j else j := j - i; writeln ('OBEB : ',(i));
Ö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 function obeb(a, b: integer): integer; begin if b = 0 then obeb := a
Ö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; 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 B=0 mı? EVET. O halde obeb=a, yani obeb=24
Ö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 O halde obeb (48,72 mod 48), yani (48,24), obeb (a,b) olduğu için a=48, b=24 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 Obeb (m,n) Burada da function kullanılıyor ama yazımı değişik!
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; 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 prev:=m; m:=n mod m; n:=prev; end; gcd:=n 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; 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 var m,n:integer; ekok:real; function gcd(m,n:integer):integer;
Program obebekok; uses wincrt; var m,n:integer; ekok:real; function gcd(m,n:integer):integer; var prev: integer; begin while m<>0 do prev:=m; m:=n mod m; n:=prev; end; gcd:=n 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


"Ödevlerin en iyi ÇÖZÜMLERİ" indir ppt

Benzer bir sunumlar


Google Reklamları