Ödev 3

Teslim Tarihi: 23 Ekim 2007

 

Ödev: N boyutundaki M adet diziyi ayrý ayrý sýraladýktan sonra NxM boyutunda iki boyutlu bir dizi haline getiriniz.

 

Ödevin açýklamasý: Bilindiði üzere pointer (göstericiler) dizi üzerinde çalýþmaktadýr. Pointerlarýn bu özelliklerinden faydalanarak M adet dizi oluþturulabilir ve diziler ayný boydaysa tek bir iki boyutlu matriks üzerinde toplanabilir.

 

Þekilde gösterildiði üzere tek bir pointer ile N adet dizinin sýralanmasý, daha sonra NxM boyutunda tanýtýlan bir diziye bilgilerin atýlmasý mümkündür. Buna göre karmaþýk olarak verilmiþ diziler sýralandýktan sonra her satýrý sýralanmýþ M satýrlý iki boyutlu bir dizi elde edilecektir.

 

Ödevin taþýmasý gereken özellikler:

Tek boyutlu dizilerin sýralamasý için istediðiniz algoritmayý kullanabilirsiniz.

Sýralama iþleminin derste anlatýldýðý gibi bir fonksiyon ile yapýlmasý ve fonksiyonun referans ile çaðarýlmasý (call by reference) isteniyor.

Hafýzada N adet M uzunluðunda dizi ve bir adet NxM uzunluðunda dizi ve bir pointer dýþýnda baþka bir yer ayýrmanýza izin verilmemiþtir. Swap (yer deðiþtirme) iþlemi için bu alanlar dýþýnda fazladan bir deðiþken veya pointer daha kullanabilirsiniz.

Ýki boyutlu dizi üretildikten sonra her satýrýnýn kendi içinde sýralý olmasý ve orijinal matirste bulunan verilerin hepsini kaybetmeden taþýmasý gerekmektedir.

 

Bonus: Yukarýdaki ödevi yaptýktan sonra ilave olarak satýrlar arasý sýralama yapýn. Yani matrisin sol üst köþesinde en küçük sayý, sað üst köþesinde ise en büyük sayý bulunacak þekilde sýralayýn. (bonusu yapmak sorunun orjinalini yapmamak demek deðildir. Bonus yapmak isteyenler sorunun orjinaline ilave olarak kodda bir fonksiyon yazabilir veya ikinci bir dosyada yollayabilirler.)

 

Deðerlendirme (aþaðýda çeþitli durumlarda alýnabilecek en yüksek puanlar verilmiþtir, bu durumlarda daha düþük puan alabiilrsiniz)

Boþ ödev veya þartlara uygun olmayan ödev yollanmasý durumunda 1 puan

Compile etmeyen kod 10 puan

Compile eden ama çalýþýrken problemi olan (sonsuz döngü, pointer hatasý gibi) ödev 30 puan

Tek boyutlu diziyi sýralayan ve call by reference ile çalýþan bir fonksiyonu olan ödev 50 puan

Tek boyutlu diziyi sýraladýktan sonra N adet dizi için sýralama iþlemi yapan ödev 70 puan

Tek boyutlu diziyi N kere sýraladýktan sonra sonuçlarý 2 boyutlu diziye baþarýlý atan ödev 100 puan

Bonus 20 puan olarak deðerlendirilecektir.

 

Derste anlattýðým call by reference örneklerinden faydalanabilirsiniz, derste not tutma problemi olanlar veya dersi kaçýranlar için örnek kodlar:

  1. Call by reference kullanýlarak swap iþlemi
  2. pointer iþlemleri ve diziler
Herkese baþarýlar.
Sorularýnýz için her zaman c [at] sadievrenseker.com adresine ileti atabilirsiniz.