Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN Ödevlerin en iyi ÇÖZÜMLERİ."— Sunum transkripti:

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

2 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.

3 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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.

4 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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. Örnek 1 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. 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

5 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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. Örnek 2 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ı >>>>>

6 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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 Örnek 2’nin açılımı

7 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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. Örnek 3 Burada da function kullanılıyor ama yazımı değişik! 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 Obeb (m,n) Obeb (n,r)

8 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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. OBEB’e başka örnekler 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.

9 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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.

10 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ Prof.Dr.Mustafa ERGÜN 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 Ödevlerin en iyi ÇÖZÜMLERİ." indir ppt

Benzer bir sunumlar


Google Reklamları