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.