Ohjelmassa sekoitetaan korttipakka ja suoritetaan jako neljään kasaan.
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> /* TIETOTYYPIT ************************/ typedef char Maa[7]; typedef char Arvo[3]; typedef struct { Maa maa; Arvo arvo; }Kortti; /* FUNKTIOIDEN PROTOTYYPIT **********/ void tayta_pakka(Kortti *); void sekoita(Kortti *); void jako_4(Kortti *); /* GLOBAALIT MUUTTUJAT **********************/ Arvo arvot[13]= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; Maa maat[4]={"Risti","Ruutu","Hertta","Pata"}; /* PÄÄOHJELMA ************************/ void main(void) { Kortti pakka[52]; tayta_pakka(pakka); sekoita(pakka); jako_4(pakka); } /* FUNKTIOIDEN MÄÄRITTELYT**********/ void tayta_pakka(Kortti *pakka) { int i; for (i=0; i<=51; i++) { strcpy(pakka[i].arvo,arvot[i%13]); strcpy(pakka[i].maa,maat[i/13]); } } void sekoita (Kortti *pakka) { int i,x; Kortti apu; srand(time(NULL)); for (i=0; i<=51; i++) { x=rand()%52; apu=pakka[i]; pakka[i]=pakka[x]; pakka[x]=apu; } } void jako_4 (Kortti *pakka) { int kasi,kohta,i,j; clrscr(); for (kasi=1,kohta=0; kasi<=4; kasi++,kohta+=13) { printf ("\n\nKäsi %d:\n",kasi); for (i=kohta,j=1; i<kohta+13; i++,j++) { printf ("%-6s %-2s ",pakka[i].maa, pakka[i].arvo); if (j==7) printf("\n"); } } }
Funktiossa jako_4() on for-rakenteiden alku- ja lopputoimissa käytetty sellaista C-kielen ominaisuutta, että useampia lausekkeita voidaan yhdistää yhdeksi lauseeksi käyttämällä niiden välissä pilkkua. Tämä on tyypillistä nimenomaan for-rakenteen yhteydessä.