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.