06 Struct
06 Struct
0
{\}
/\
Suhap SAHIN
Onur GÖK 1
Hafıza Yerlesimleri
Bellek İçeriği Adress
2000H
2001H
2002H
int v=1453; 1453
2003H
2004H
2006H
d 2007H
i 2008H
char cumle[ ] = "dizi";
z 2009H
i 200AH
200BH 2
Hafıza Yerlesimleri
Bellek İçeriği Adress
2000H
2001H
2002H
int v=1453;
struct HafizaBirimleri { 1453
2003H
"dizi"; d 2007H
i 2008H
}; char cumle[ ] = "dizi";
z 2009H
i 200AH
200BH 3
Zaman islemleri
Saat
Dakika
Saniye
4
Zaman islemleri
#include <stdio.h>
#include <stdlib.h>
int main() {
5
Zaman islemleri
#include <stdio.h>
#include <stdlib.h>
struct Zaman {
int saat;
int dakika;
int saniye;
};
int main() {
// degerlerin kullanimi
printf("%d %d %d\n", [Link], [Link], [Link]);
}
6
Zaman islemleri
#include <stdio.h>
#include <stdlib.h>
struct Zaman {
int saat;
int dakika;
int saniye;
};
int main() {
struct Zaman z1;
struct Zaman z2;
return 0;
} 8
Baslangıc Deger Ataması
#include <stdio.h>
#include <stdlib.h>
struct Zaman {
int saat;
int dakika;
int saniye;
};
int main(){
return 0;
} 9
Baslangıc Deger Ataması
#include <stdio.h>
#include <stdlib.h>
struct Zaman {
int saat;
int dakika;
int saniye;
};
int main(){
return 0;
}
10
Ögrencilere Ait Bilgiler
#include <stdio.h>
#include <stdlib.h>
struct Ogrenci { //
Ogrenci : ad soyad ogrNo kayitYili TCKimlik
char ad[30];
char soyad[30];
int ogrenciNo;
int kayitYili;
char TCKimlik[12];
};
int main(){
struct Ogrenci liste[100];
strcpy(liste[0].ad, "deneme"); // ilk ogrencinin
adina "deneme" ata
liste[0].kayitYili = 2015; // ilk ogrencinin kayit
yilina 2015 ata
liste[0].ogrenciNo = 123; // ilk ogrencinin
numarasina 123 ata
printf("%s %d\n", liste[0].ad, liste[0].ogrenciNo); // ilk ogrencinin adini ve
numarasini yaz
return 0; 11
}
Tarih Olusturma
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Tarih {
int gun;
int ay;
int yil;
};
struct Tarih Tarih_olustur(int g, int a, int y) {
struct Tarih t;
if (g > 31 || a > 12) {
[Link] = 0;
[Link] = 0;
[Link] = 0;
} else {
[Link] = g;
[Link] = a;
[Link] = y;
}
return t;
}
int main(){
struct Tarih t1;
t1 = Tarih_olustur(10,15,2015);
printf("%d %d %d\n", [Link], [Link], [Link]);
struct Tarih t5 = Tarih_olustur(3, 3, 2016);
printf("%d %d %d\n", [Link], [Link], [Link]);
return 0;
} 12
Tarih Karsılastırma
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Tarih {
int gun;
int ay;
int yil;
};
struct Tarih Tarih_olustur(int g, int a, int y) {
struct Tarih t;
if (g > 31 || a > 12) {
[Link] = 0;
[Link] = 0;
[Link] = 0;
} else {
[Link] = g;
[Link] = a;
[Link] = y;
}
return t;
}
int main(){
struct Tarih t5 = Tarih_olustur(3, 3, 2016);
struct Tarih t6 = Tarih_olustur(3, 3, 2016);
// tum icerik tek tek karsilastirilabilir
if ([Link] == [Link] && [Link] == [Link] && [Link] == [Link])
printf("t5 ve t6 esit\n");
else
printf("t5 ve t6 esit degil\n");
return 0; 13
}
Tarih Karsılastırma
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Tarih {
int gun;
int ay;
int yil;
};
struct Tarih Tarih_olustur(int g, int a, int y) {
struct Tarih t;
if (g > 31 || a > 12) {
[Link] = 0;
[Link] = 0;
[Link] = 0;
} else {
[Link] = g;
[Link] = a;
[Link] = y;
}
return t;
}
int main()
{
struct Tarih t5 = Tarih_olustur(3, 3, 2016);
struct Tarih t6 = Tarih_olustur(3, 3, 2016);
if (memcmp(&t5, &t6, sizeof(struct Tarih)) == 0)
printf("t5 ve t6 esit\n");
else
printf("t5 ve t6 esit degil\n");
return 0; 14
}
Tarih Karsılastırma
#include <stdio.h>
struct Tarih {
int gun; int ay; int yil;
};
struct Tarih Tarih_olustur(int g, int a, int y) {
struct Tarih t;
if (g > 31 || a > 12) {
[Link] = 0; [Link] = 0; [Link] = 0;
} else {
[Link] = g; [Link] = a; [Link] = y;
}
return t;
}
int Tarih_karsilastir(struct Tarih t1, struct Tarih t2) {
if ([Link] > [Link])
return 1;
if ([Link] == [Link] && [Link] > [Link]) return 1;
if ([Link] == [Link] && [Link] == [Link] && [Link] > [Link]) return 1;
if ([Link] == [Link] && [Link] == [Link] && [Link] == [Link]) return 0;
return -1;
}
int main()
{
struct Tarih t5 = Tarih_olustur(3, 3, 2016);
struct Tarih t6 = Tarih_olustur(3, 3, 2016);
int sonuc = Tarih_karsilastir(t5, t6);
if (sonuc == 1) printf("t5 > t6\n");
else if (sonuc == 0) printf("t5 == t6\n");
else printf("t5 < t6\n");
return 0; 15
}
Tarih Karsılastırma
if (a > b)
return 1;
else if (a == b)
return 0;
else
return -1;
}
16
Bellek Alanı
#include <stdio.h>
#include <stdlib.h>
struct Tarih {
int gun;
int ay;
int yil;
};
struct Ogrenci {
char ad[30];
char soyad[30];
int ogrenciNo;
int kayitYili;
char TCKimlik[12];
struct Tarih dogumTarihi;
struct Tarih kayitTarihi;
};
int main(){
printf("int : %d\n", sizeof(int));
printf("Tarih : %d\n", sizeof(struct Tarih));
printf("Ogrenci : %d\n", sizeof(struct Ogrenci));
return 0;
} 17
Fonksiyon & Struct
#include <stdio.h>
#include <math.h>
struct Nokta {
int x;
int y;
};
return 0;
} 18
Fonksiyon & Struct
#include <stdio.h>
#include <math.h>
struct Nokta {
int x;
int y;
};
int main() {
struct Nokta nokta1 = {1, 4};
return 0;
}
19
Fonksiyon & Struct
#include <stdio.h>
#include <math.h>
struct Nokta {
int x;
int y;
};
void Nokta_deger_ata_2(struct Nokta *nokta, int x, int y) {
(*nokta).x = x;
(*nokta).y = y;
}
double Nokta_uzaklik_2(struct Nokta *n1, struct Nokta *n2) {
return sqrt(pow(n1->x - n2->x, 2) + pow(n1->y - n2->y, 2));
}
int main() {
struct Nokta nokta1 = {1, 4};
struct Nokta nokta2 = {1, 2};
Nokta_deger_ata_2(&nokta1, 2, 1);
printf("deger_ata_2 fonksiyonu sonrasinda\n");
printf("nokta1 x,y : %d,%d\n\n", nokta1.x, nokta1.y);
double uzaklik = Nokta_uzaklik_2(&nokta1, &nokta2);
printf("nokta1 ve nokta2 arasindaki uzaklik: %lf\n\n", uzaklik);
return 0;
}
20
#include <stdio.h>
#include <string.h>
struct Tarih {
Struct Tipinde Dizi
int gun; int ay; int yil;
};
struct Tarih Tarih_olustur(int gun, int ay, int yil) {
struct Tarih t;
if (gun > 31 || ay > 12) { [Link] = 0; [Link] = 0; [Link] = 0;
} else { [Link] = gun; [Link] = ay; [Link] = yil; }
return t;
}
struct Ogrenci {
char ad[21];
char soyad[21];
char no[11];
char bolum[41];
struct Tarih kayit_tarihi;
};
void Ogrenci_atama_yap(struct Ogrenci *ogr, const char adi[ ], const char soyadi[ ], const char numarasi[ ], const char bolumu[ ], struct Tarih kayit_oldugu_tarih) {
strcpy(ogr->ad, adi);
strcpy(ogr->soyad, soyadi);
strcpy(ogr->no, numarasi);
strcpy(ogr->bolum, bolumu);
ogr->kayit_tarihi = kayit_oldugu_tarih;
}
int main() {
struct Ogrenci ogr1;
Ogrenci_atama_yap(&ogr1, "Abcd", "Soyad", "150202175","Bilgisayar Muhendisligi", Tarih_olustur(01, 02, 2015));
printf("adi: %s\n", [Link]);
printf("soyadi: %s\n", [Link]);
printf("no: %s\n", [Link]);
printf("bolum: %s\n", [Link]);
printf("kayit yili: %d\n\n", ogr1.kayit_tarihi.yil);
return 0; 21
}
Struct Tipinde Dizi
#include <stdio.h>
#include <string.h>
struct Tarih {
int gun; int ay; int yil;
};
struct Tarih Tarih_olustur(int gun, int ay, int yil) {
struct Tarih t;
if (gun > 31 || ay > 12) { [Link] = 0; [Link] = 0; [Link] = 0;
} else { [Link] = gun; [Link] = ay; [Link] = yil; }
return t;
}
struct Ogrenci {
char ad[21];
char soyad[21];
char no[11];
char bolum[41];
struct Tarih kayit_tarihi;
};
void Ogrenci_atama_yap(struct Ogrenci *ogr, const char adi[ ],const char soyadi[ ], const char numarasi[ ], const charbolumu[ ], struct Tarih kayit_oldugu_tarih) {
strcpy(ogr->ad, adi); strcpy(ogr->soyad, soyadi);
strcpy(ogr->no, numarasi); strcpy(ogr->bolum, bolumu);
ogr->kayit_tarihi = kayit_oldugu_tarih;
}
int main() {
struct Ogrenci ogr_liste[20];
Ogrenci_atama_yap(&ogr_liste[0], "A", "A", "150202177", "BilgisayarMuhendisligi", Tarih_olustur(1, 2, 2015));
Ogrenci_atama_yap(&ogr_liste[1], "B", "B", "150202178", "BilgisayarMuhendisligi", Tarih_olustur(1, 2, 2015));
Ogrenci_atama_yap(&ogr_liste[2], "C", "C", "150202179", "BilgisayarMuhendisligi", Tarih_olustur(2, 9, 2014));
int kayitli_ogr_sayisi = 3;
for (int i = 0 ; i < kayitli_ogr_sayisi ; i++) {
printf("adi soyad: %s %s\n", ogr_liste[i].ad, ogr_liste[i].soyad);
printf("no: %s\n", ogr_liste[i].no);
printf("bolum: %s\n", ogr_liste[i].bolum);
printf("kayit tarihi: %02d.%02d.%d\n", ogr_liste[i].kayit_tarihi.gun,ogr_liste[i].kayit_tarihi.ay, ogr_liste[i].kayit_tarihi.yil);
}
return 0; 22
}
Sorular
23