14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı...

15
14. Hafta Struct Dizisi - İç İçe Structlar Dr. Öğr. Üyesi Nesibe YALÇIN https://nesibeyalcin.wordpress.com/bsm104/ BARTIN ÜNİVERSİTESİ MÜHENDİSLİK, MİMARLIK VE TASARIM FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Transcript of 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı...

Page 1: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

14. Hafta – Struct Dizisi - İç İçe

Structlar

Dr. Öğr. Üyesi Nesibe YALÇIN

https://nesibeyalcin.wordpress.com/bsm104/

BARTIN ÜNİVERSİTESİ

MÜHENDİSLİK, MİMARLIK VE TASARIM FAKÜLTESİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Page 2: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

2

Struct Dizisi ― Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

struct urun{

int id; char ad[20], marka [20]; float fiyat; };

― struct urun urun1, urun2, urun3, …., urun10; ― struct urun urunler[10];

Page 3: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

3

Struct Dizisi struct telefon{

char marka[20], model[30]; char imei_no[16]; char renk[10]; float fiyat; } firma[40]; // 40 elemandan oluşan struct telefon dizisi

struct sporcu{ char ad_soyad[50]; float boy, kilo; int forma_no;

} takim [12];

Page 4: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

4

Struct Dizisi

typedef enum yakit {dizel, benzin, lpg, elektrik}; struct araba{

char marka[20], model[30]; int kapi_sayisi; yakit y_tur; char kasa_tipi; float motor_hacmi; double fiyat; } galeri[50]; // 50 elemandan oluşan struct urun dizisi

Page 5: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

5

Struct Dizisi ― Başlangıç değer atama;

struct nokta_3d{

int x, y, z; } A={12, 4, 8};

― Struct dizisi için başlangıç değer atama; struct nokta_3d{

int x, y, z; } noktalar[3]={{12, 4, 8}, {2,3,1},{10, 4, 6}};

Page 6: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

6

Struct Dizisi typedef struct uye{

char ad_soyad [50]; char meslek[30]; int yas; float boy, kilo; };

uye grup[10]; ― strcpy(grup[0].ad_soyad,"mehmet alim"); ― strcpy(grup[0].meslek, "ogretmen"); ― grup[0].yas=38; ― grup[0].boy=1.68, grup[0].kilo=66.8;

Page 7: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

7

Struct Dizisi – Örnek #include <stdio.h> #include <conio.h> int main() { struct uye{

char isim[10]; int yas; float boy, kilo; }grup[5];

for(int i=0;i<5;i++) {

printf("%d.uye:",i+1); scanf("%s %d %f %f", grup[i].isim,&grup[i].yas,&grup[i].boy,&grup[i].kilo);

} puts("uye adi\t yas\t boy\t kilo\n"); for(int i=0;i<5;i++)

printf("%s \t%d \t%.2f \t%.2f \n", grup[i].isim,grup[i].yas,grup[i].boy,grup[i].kilo);

getch(); }

Page 8: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

8

Struct Dizisi – Örnek

#include <stdio.h> #include <conio.h> int main() { struct kayit{

char ad[20]; char soyad[30]; char tel[10];

}rehber[10]; FILE * dosya=fopen("rehberim.txt","r"); int i=0; while(!feof(dosya) && i<10){

fscanf(dosya,"%s %s %s\n", rehber[i].ad,rehber[i].soyad,rehber[i].tel); printf("%s %s %s\n",rehber[i].ad,rehber[i].soyad,rehber[i].tel); i++; }

fclose(dosya); getch(); }

Page 9: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

9

İç İçe Structlar struct nokta{

int x, y; }; struct dortgen{

struct nokta kose1, kose2;}d1={{20,8},{10,6}};

struct dortgen d2; d2.kose1.x=10; d2.kose2.x=30; d2.kose1.y=2; d2.kose2.y=10; struct dortgen d3={20,8,10,6};

Page 10: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

10

İç İçe Structlar #include <stdio.h> #include <conio.h> void main() { struct nokta{ int x, y; }; struct dortgen{ struct nokta kose1, kose2;}d1={{20,8},{10,6}}; struct dortgen d2={10,4,0,6}; puts("1. Dortgen"); printf("Kose noktalari: (%d, %d) - (%d, %d)\n", d1.kose1.x,d1.kose1.y,d1.kose2.x,d1.kose2.y); puts("2. Dortgen"); printf("Kose noktalari: (%d, %d) - (%d, %d)", d2.kose1.x,d2.kose1.y,d2.kose2.x,d2.kose2.y); getch(); }

Page 11: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

11

İç İçe Structlar

struct insan{ char ad[20], soyad [30]; int yas; float kilo,boy; struct tarih{

int gun; int ay; int yil; } dogum_tarihi;

};

struct insan{ char ad[20], soyad [30]; int yas; float kilo,boy; tarih dogum_tarihi; }

struct tarih{ int gun; int ay; int yil; };

Page 12: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

12

İç İçe Structlar enum fakulte {bm=1,ksm,eem,mim,im,mm}; struct tarih{

int gun; int ay; int yil; };

struct ogrenci{

int no; char ad[20], soyad [30]; struct tarih dogum_tarihi; enum fakulte bolum; };

Page 13: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

13

İç İçe Structlar typedef enum fakulte {bm=1,ksm,eem,mim,im,mm}; typedef struct tarih{

int gun; int ay; int yil; };

typedef struct ogrenci{

int no; char ad[20], soyad [30]; tarih dogum_tarihi; fakulte bolum; };

ogrenci ogr1; strcpy(ogr1.ad,"erkan"); strcpy(ogr1.soyad,"kalem"); ogr1.no=12; ogr1.dogum_tarihi.gun=4; ogr1.dogum_tarihi.ay=4; ogr1.dogum_tarihi.yil=1998; ogr1.bolum=im;

Page 14: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

14

İç İçe Structlar typedef struct ucak { char model_no [5]; char uretici [30]; }; typedef struct zaman{ int saat, dakika; }; typedef struct tarih{ int gun,ay,yil; }; Uygulama örneği

struct ucus{ char ucus_no[10]; ucak ucak_bilgi; char gidis[20], gelis[20]; zaman kalkis_saati, varis_saati; tarih ucus_tarihi; };

Page 15: 14. Hafta Struct Dizisi - İç İçe Structlar...2020/05/14  · 2 Struct Dizisi ―Bir tam sayı dizisi, bir karakter dizisi gibi struct (yapı) dizisini de rahatlıkla oluşturabiliriz.

15

Uygulamalar

― C sürücüsünde «personel.txt» dosyasında donanım biriminde çalışan personellere ilişkin veriler tutulmaktadır. Bu dosyada yer alan verileri oluşturduğunuz struct dizisine atadıktan sonra ekrana yazdıran C programını yazınız.

― İçerisinde "isim" bilgisini tutan bir karakter dizisi, sırasıyla kol ve bacak sayısını tutan "kol_sayisi" ve "bacak_sayisi" tam sayı değişkenleri olan «hayvan» isimli bir yapı tanımlayın. Ankara Hayvanat Bahçesinde bulunan 20 adet hayvana ilişkin bilgileri bu yapı ile oluşturduğunuz diziye kaydediniz.