· BIL106

BİL106 Laboratuvar Çalışması #6: Yapılar (struct) ve Dizgiler

BIL106 – Programlamaya Giriş · 27.03.2007 · 16.10.2026

Bu yazı, Başkent Üniversitesi BİL106 Programlamaya Giriş dersinin 6. laboratuvar çalışmasıdır. Föyü hazırlayan Muhammet Yorulmaz; föyde amaç "dizgiler (strings)" olarak yazılı, ancak soruların hepsi C'de yapılar (struct) üzerine kurulu. Sorular föydeki hâliyle aktarıldı; föyün orijinal PDF'i yazının sonunda indirilebilir.

Soru 1: Öğrenci listesini ortalamaya göre sıralama

Üyeleri aşağıdaki gibi olan ogrenci adındaki yapıyı tanımlayınız. Bu yapı tipinde tanımlanmış 10 elemanlı bir dizi tanımlayıp elemanlarını klavyeden giren ve ekranda ortalamasına göre büyükten küçüğe olacak şekilde listeleyen programı yazınız.

Üye adıTürUzunluk
adkarakter20
soyadkarakter20
ortondalık–

Örnek çalışma:

1. adı,soyadı,ortalamasını giriniz: Mehmet Çelik 3.45
2. adı,soyadı,ortalamasını giriniz: Dursun Mert 2.45
:   :   :
9. adı,soyadı,ortalamasını giriniz: Ahmet Serdar 3.00
10. adı,soyadı,ortalamasını giriniz: Sinan Tonguç 2.99
--------LİSTE------------------
Mehmet Çelik 3.45
Ahmet Serdar 3.00
Sinan Tonguç 2.99
Dursun Mert 2.45
:   :   :

Soru 2: İki zamanı toplayan zamantopla fonksiyonu

Üyeleri aşağıdaki gibi olan zaman adındaki yapıyı (struct) tanımlayınız. Tanımladığınız bu yapı türünde ana fonksiyon içerisinde a1 ve a2 adında iki adet değişken tanımlayınız. Bunların ilk değerlerini (23, 30, 20) ve (1, 0, 40) olarak belirleyiniz. Bu iki değişkeni alıp ikinciyi birincinin üzerine ekleyen zamantopla adındaki fonksiyonu yazınız. Fonksiyon bittikten sonra a1 içerisindeki değerler (0, 31, 0) olmalıdır. Bunu göstermek için değişkenlerin değerlerini ana fonksiyon içerisinde, fonksiyon çağrımından sonra ekrana yazdırınız.

Üye adıTür
saattamsayı
dakikatamsayı
saniyetamsayı

Soru 3: Ondalık sayıyı parçalarına ayıran floatToplam

Ondalık (float) türündeki sayıları ifade etmek amacıyla üyeleri aşağıdaki gibi, adı ondalik olan bir yapı (struct) tanımlayınız.

Üye adıÜye tipi
İşaretiKarakter
Tam kısmıTamsayı
Ondalık kısmıTamsayı

Buna göre, kendisine gönderilen 2 adet ondalıklı sayının toplamını ayrıştırıp yukarıdaki yapı türünde tanımlanmış 3. parametresindeki değişkene aktaran floatToplam adındaki fonksiyonu yazınız. Ondalık kısmın yalnızca 3 hanesi alınacaktır. Fonksiyonunuz aşağıdaki main fonksiyonuna uygun olmalıdır. Global değişken kullanmayınız ve main fonksiyonuna boş bırakılan yerler (noktalı yerler) hariç başka bir ekleme yapmayınız. Fonksiyon prototipi ve fonksiyon çağrısı da değerlendirilecektir.

Örnek program:

........................... /*Yapı tanımı*/
............................... /*Prototip*/
int main()
{
   struct ondalik sonuc;
   float sayi1=-987.6543, sayi2=12.34;

   floatToplam(sayi1, sayi2, &sonuc);
   printf("Sonucun tamkısmı=%ld\n", sonuc.tam);
   printf("Sonucun ondalıkkısmı=%ld\n", sonuc.on);
   printf("Sonucun işareti=%c", sonuc.isaret);
   return 0;
}

Çıktı:

Sonucun tamkısmı=975
Sonucun ondalıkkısmı=314
Sonucun işareti= -

Not: -987,6543 + 12,34 = -975,3143; yani tam kısım 975, ondalık kısmın ilk üç hanesi 314 ve işaret eksi. Föydeki tırnak işaretleri Word'ün "akıllı tırnak"larıydı; derlenebilsin diye düz tırnakla yazıldı.

Bil106_lab6.pdf

PDF · 198 KB · 1 · 27.03.2007

⬇ (198 KB)