Struck yapılar ~ Meraklı Rakun

7 Eylül 2013 Cumartesi

Struck yapılar






Struck içine farklı tipte elemanlar alabilen ve bunları hep birlikte tek tip olarak tanımlamamıza olanak veren bir yapıdır.
  
Bu programımda struck yapıları üzerine bir kaç işlem yaptım. Struck yapı üzerine farklı değişkenleri random olarak atayarak sıraladım.

Program;

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

#define MAX 30

struct person {                               Struck yapımız ve
    int a;                                               içindeki değişkenlerimiz.
    char b;
    char c[20];
    float t;

};

void displaySturct(struct person *p) {

    int u;
    for (u = 0; u < MAX; u++) {                Display fonsiyonumuz
        printf("integer a   ");                              yani işlem sonucunda
        printf("\n");                                                 görmek istediğimiz
        printf("%2d ", p[u].a);                                     sonuçların düzenlendiği
        printf("\n");                                                         bölüm.
        printf("char b      ");
        printf("\n");
        printf("%c ", p[u].b);
        printf("\n");
        printf("char array C");
        printf("\n");
        printf("%s ", p[u].c);
        printf("\n");
        printf("float t     ");
        printf("\n");
        printf("%f ", p[u].t);
        printf("\n");


    }
    printf("\n");
    printf("\n");
    fflush(stdout);
}

void insertionSort(struct person *p) {             Sıralama algoritmamızın
    int i, o;                                                                  yer aldığı fonsiyonumuz.
    struct person t;
    for (i = 1; i < MAX; i++) {
        for (o = i; (o > 0) && (p[o].a <p[o - 1].a); o--) {
            t = p[o];
            p[o] = p[o - 1];
            p[o - 1] = t;
        }
    }
}

int randomA() { //ok!

    int q = rand() % 100;
    //printf("%2d ", q);
    return q;

}

char randomB() { // ok!

    int n = rand() % 26;                      Rasgele almak istediğim değerler için
    char c = (char) (n + 68);                                          yazdığım fonksiyonlar.                              
  // fprintf(stdout, "%c", c);                              
    return c;                                                       

}

float randomT() { // ok!

    float n = rand() % 26;
    float t = (float) (n + 65);
    //fprintf(stdout, "%f", t);
    return t;
}

int main(void) {

    struct person p[MAX];
    int i;
    for (i = 0; i <MAX; i++) {                Main, yazığımız fonsiyonlar ile
                                                                    verilerimizi birleştirip sonuç aldığımız
        p[i].a = randomA();                                bölüm.
        p[i].b = randomB();
        int k;
        for (k = 0; k < 19; k++) {
            p[i].c[k] = randomB();

        }
        p[i].c[19]='\0';
        p[i].t = randomT();


    }


    insertionSort(p);
    displaySturct(p);

    return EXIT_SUCCESS;
}


Sıralama için daha önce yazmış olduğum sort metodlarından yararlandım
tabi struct taki değişkenler için biraz özelleştirmem gerekti.