#include #include #include /* Exempel på fält med pekare till structs */ typedef struct /* ett spelkort */ { int valor; int farg; } Spelkort; /* byt plats på två (pekare till) spelkort */ void byt(Spelkort **a, Spelkort **b) { Spelkort *t; /* temporär variabel */ t = *a; *a = *b; *b = t; } /* bubble sort för pekare till kort */ void bubbel(Spelkort *lista[], int n) { int i,sist; int bytt; /* logisk */ sist = n-1; /* sista index i listan */ do { bytt = 0; /* logiskt false */ for (i=0;i <= sist-1; i++) { if ((lista[i]->farg * 4 + lista[i]->valor) > (lista[i+1]->farg * 4 + lista[i+1]->valor)) { byt(&lista[i],&lista[i+1]); bytt = 1; /* logiskt true */ } } sist = sist - 1; }while (bytt || sist==1); } /* bubbel */ void skrivKort(Spelkort *s[], int n) { int i; const char* farger[] = {"Spader", "Hjärter", "Klöver", "Ruter" }; const char* valorer[] = {"Ess", "Två", "Tre", "Fyra", "Fem", "Sex", "Sju", "Åtta", "Nio", "Tio", "Knekt", "Dam", "Kung"}; printf("\nPokerhand : \n"); for (i = 0; i < n; i++) printf("Kort %d: %s %s\n", i, farger[s[i]->farg], valorer[s[i]->valor]); } int main(void) { Spelkort *pokerhand[5]; Spelkort *kort; int i; srand(time(0)); for (i = 0; i < 5; i++) { kort = (Spelkort *)malloc(sizeof(Spelkort)); kort->farg = random(4); /* slumpmässig färg */ kort->valor = random(14); /* slumpmässig valör (0-13) */ pokerhand[i] = kort; /* pekare stoppas in i fältet */ } skrivKort(pokerhand, 5); bubbel(pokerhand, 5); skrivKort(pokerhand, 5); return 0; }