Skip to content

Instantly share code, notes, and snippets.

@Mervetafrali
Created May 9, 2017 12:41
Show Gist options
  • Save Mervetafrali/2499d94d678fb2fee78ab54d9d4d9555 to your computer and use it in GitHub Desktop.
Save Mervetafrali/2499d94d678fb2fee78ab54d9d4d9555 to your computer and use it in GitHub Desktop.

Programlama 9.Hafta

Struct

1

Hafıza Yerleşimleri

2

Zaman İşlemleri

  • Saniye

  • Dakika

  • Saat

3
#include <stdio.h>
#include <stdlib.h>
int main() {

    int saat1, saat2;
    int dakika1, dakika2;
    int saniye1, saniye2;

    printf("baslangic zamani girin : ");
    scanf("%d %d %d", &saat1, &dakika1, &saniye1);

    printf("bitis zamani girin : ");
    scanf("%d %d %d", &saat2, &dakika2, &saniye2);

    int saat_farki = saat2 - saat1;
    printf("saat farki : %d\n", saat_farki);
    return 0;
}
#include <stdio.h>
#include <stdlib.h>

struct Zaman {
    int saat;
    int dakika;
    int saniye;
};
int main() {

    struct Zaman z1;

    // yapinin elemanlarina deger atama islemi
    z1.saat = 7;
    z1.dakika = 18;
    z1.saniye = 52;

    // degerlerin kullanimi
    printf("%d %d %d\n", z1.saat, z1.dakika, z1.saniye);

}
#include <stdio.h>
#include <stdlib.h>

struct Zaman {
    int saat;
    int dakika;
    int saniye;
};
int main() {

    struct Zaman z1;
    struct Zaman z2;

    printf("baslangic zamani girin : ");
    scanf("%d %d %d", &z1.saat, &z1.dakika, &z1.saniye);

    printf("bitis zamani girin : ");
    scanf("%d %d %d", &z2.saat, &z2.dakika, &z2.saniye);

    int saat_farki = z2.saat - z1.saat;
    printf("saat farki : %d\n", saat_farki);
    return 0;
}

Başlangıç Değeri Atanması

#include <stdio.h>
#include <stdlib.h>

struct Zaman {
    int saat;
    int dakika;
    int saniye;
};
int main()
{
    /// Zaman tipinde degisken tanimlama
    /// baslangic degeri atama
    struct Zaman z = { 14, 43, 3 };

    /// degerlerin kullanimi
    printf("z1.saat : %d\n", z.saat);
    printf("z1.dakika : %d\n", z.dakika);
    printf("z1.saniye : %d\n", z.saniye);
    printf("\n");

    return 0;
}
#include <stdio.h>
#include <stdlib.h>

struct Zaman {
    int saat;
    int dakika;
    int saniye;
};
int main()
{

    /// degelerin tamamini atamadan tanimlanması
    struct Zaman z2 = { 15 };

    printf("z2.saat : %d\n", z2.saat);
    printf("z2.dakika : %d\n", z2.dakika);
    printf("z2.saniye : %d\n", z2.saniye);
    printf("\n");

    return 0;
}
#include <stdio.h>
#include <stdlib.h>

struct Zaman {
    int saat;
    int dakika;
    int saniye;
};
int main()
{

    /// deger atamasi yapmadan tanimlanması
    struct Zaman z3;
    printf("z3.saat : %d\n", z3.saat);
    printf("z3.dakika : %d\n", z3.dakika);
    printf("z3.saniye : %d\n", z3.saniye);
    printf("\n");

    return 0;
}

ÖğrenciLERE Ait Bilgiler

#include <stdio.h>
#include <stdlib.h>

/**
    Ogrenci : ad soyad ogrNo kayitYili TCKimlik
*/

struct Ogrenci {

    char ad[30];
    char soyad[30];
    int ogrenciNo;
    int kayitYili;
    char TCKimlik[12];

};
int main()
{
    struct Ogrenci liste[100];

    /// ilk ogrencinin adina "deneme" ata
    strcpy(liste[0].ad, "deneme");

    /// ilk ogrencinin kayit yilina 2015 ata
    liste[0].kayitYili = 2015;

    /// ilk ogrencinin numarasina 123 ata
    liste[0].ogrenciNo = 123;

    /// ilk ogrencinin adini ve numarasini yaz
    printf("%s %d\n", liste[0].ad, liste[0].ogrenciNo);

    return 0;
}

Değer kontrolü ve karşılaştırma

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Tarih {
    int gun;
    int ay;
    int yil;
};
int main()
{

    struct Tarih t1;

    t1 = Tarih_olustur(10,15,2015);

    printf("%d %d %d\n", t1.gun, t1.ay, t1.yil);

    struct Tarih t5 = Tarih_olustur(3, 3, 2016);
    struct Tarih t6 = Tarih_olustur(3, 3, 2016);

    return 0;
}
struct Tarih Tarih_olustur(int g, int a, int y) {
    struct Tarih t;

    if (g > 31 || a > 12) {
           t.gun = 0;
           t.ay = 0;
           t.yil = 0;
    } else {
           t.gun = g;
           t.ay = a;
           t.yil = 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 (t5.yil == t6.yil && t5.ay == t6.ay && t5.gun == t6.gun)
printf("t5 ve t6 esit\n");
else
       printf("t5 ve t6 esit degil\n");

    return 0;
}
int main()
{
    struct Tarih t5 = Tarih_olustur(3, 3, 2016);
    struct Tarih t6 = Tarih_olustur(3, 3, 2016);

    /// memcmp ile iki struct tipinde degisken karsilastirilabilir
if (memcmp(&t5, &t6, sizeof(struct Tarih)) == 0)
           printf("t5 ve t6 esit\n");
    else
           printf("t5 ve t6 esit degil\n");

    return 0;
}
int main()
{
    struct Tarih t5 = Tarih_olustur(3, 3, 2016);
    struct Tarih t6 = Tarih_olustur(3, 3, 2016);

    /// kendi algoritmamizi olusturmamiz gerek
    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;
}
int Tarih_karsilastir(struct Tarih t1, struct Tarih t2) {

    if (t1.yil > t2.yil)
return 1;
if (t1.yil == t2.yil && t1.ay > t2.ay)
return 1;
if (t1.yil == t2.yil && t1.ay == t2.ay && t1.gun > t2.gun)
return 1;
if (t1.yil == t2.yil && t1.ay == t2.ay && t1.gun == t2.gun)
return 0;
/// diger
    return -1;
}
int Tarih_karsilastir(struct Tarih t1, struct Tarih t2) {

    int a = t1.yil * 365 + t1.ay * 30 + t1.gun;
    int b = t2.yil * 365 + t2.ay * 30 + t2.gun;

if (a > b)
           return 1;
    else if (a == b)
           return 0;
    else
           return -1;
}

Bellekte Alanı

#include <stdio.h>
#include <stdlib.h>

struct Tarih {
    int gun;
    int ay;
    int yil;
};
[source,c]
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;
}

Fonksiyon & Struct

#include <stdio.h>
#include <math.h>

struct Nokta {
    int x;
    int y;
};

double Nokta_uzaklik(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};

    printf("nokta1 x,y : %d,%d\n", nokta1.x, nokta1.y);
    printf("nokta2 x,y : %d,%d\n\n", nokta2.x, nokta2.y);

    double uzaklik = Nokta_uzaklik(nokta1, nokta2);
    printf("nokta1 ve nokta2 arasindaki uzaklik: %lf\n\n", uzaklik);

    return 0;
}
#include <stdio.h>
#include <math.h>

struct Nokta {
    int x;
    int y;
};
int main() {
    struct Nokta nokta1 = {1, 4};
    struct Nokta nokta2 = {1, 2};

    Nokta_deger_ata_1(nokta1, 100, 200);
    printf("deger_ata_1 fonksiyonu sonrasinda\n");
    printf("nokta1 x,y : %d,%d\n\n", nokta1.x, nokta1.y);

    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);

    // uzaklik hesaplayan ikinci fonksiyon adres ile cagirma seklinde kullanilabilir
    uzaklik = Nokta_uzaklik_2(&nokta1, &nokta2);
    printf("nokta1 ve nokta2 arasindaki uzaklik: %lf\n\n", uzaklik);

    return 0;
}
/// hatali kullanim ornegi. structlar deger ile gonderildiginde fonksiyona kopyasi gider
void Nokta_deger_ata_1(struct Nokta nokta, int x, int y) {
    nokta.x = x;
    nokta.y = y;
}
#include <stdio.h>
#include <math.h>

struct Nokta {
    int x;
    int y;
};
int main() {
    struct Nokta nokta1 = {1, 4};
    struct Nokta nokta2 = {1, 2};

    Nokta_deger_ata_1(nokta1, 100, 200);
    printf("deger_ata_1 fonksiyonu sonrasinda\n");
    printf("nokta1 x,y : %d,%d\n\n", nokta1.x, nokta1.y);

    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);

    // uzaklik hesaplayan ikinci fonksiyon adres ile cagirma seklinde kullanilabilir
    uzaklik = Nokta_uzaklik_2(&nokta1, &nokta2);
    printf("nokta1 ve nokta2 arasindaki uzaklik: %lf\n\n", uzaklik);

    return 0;
}
/// adres ile cagirma ornegi, degeri degistirilebilir
void Nokta_deger_ata_2(struct Nokta *nokta, int x, int y) {
    (*nokta).x = x;
    (*nokta).y = y;

    /* (*nokta).x == nokta->x
      nokta->x = x;
      nokta->y = y;        */
}

/// Nokta_uzaklik fonksiyonunun adresle cagirma seklinde yazilmis sekli
double Nokta_uzaklik_2(struct Nokta *n1, struct Nokta *n2) {
    return sqrt(pow(n1->x - n2->x, 2) + pow(n1->y - n2->y, 2));
}

İç içe ve dizi şeklinde kullanimi

#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) {
        t.gun = 0;
        t.ay = 0;
        t.yil = 0;
    } else {
        t.gun = gun;
        t.ay = ay;
        t.yil = yil;
    }
    return t;
}
struct Ogrenci {
    char ad[21];
    char soyad[21];
    char no[11];
    char bolum[41];

    struct Tarih kayit_tarihi;
};
// @ogr pointerinin gosterdigi structa: ad, soyad, numara, ...
// bilgilerini atar

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", ogr1.ad);
printf("soyadi: %s\n", ogr1.soyad);
printf("no: %s\n", ogr1.no);
printf("bolum: %s\n", ogr1.bolum);
printf("kayit yili: %d\n\n", ogr1.kayit_tarihi.yil);

return 0;
}
// dizilerle kullanim
struct Ogrenci ogr_liste[20];

// dizideki 0 indexli eleman fonksiyon icerisinde degistirilerek veriler atanir
Ogrenci_atama_yap(&ogr_liste[0], "A", "A", "150202177", "Bilgisayar
Muhendisligi", Tarih_olustur(1, 2, 2015));

Ogrenci_atama_yap(&ogr_liste[1], "B", "B", "150202178", "Bilgisayar
Muhendisligi", Tarih_olustur(1, 2, 2015));

Ogrenci_atama_yap(&ogr_liste[2], "C", "C", "150202179", "Bilgisayar
Muhendisligi", Tarih_olustur(2, 9, 2014));
int kayitli_ogr_sayisi = 3;

printf("-------------------\n");
printf("ogrenci listesi:\n");
int i;

for (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);
    printf("\n");

}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment