Anasayfaya Dön

C’de kart karma ve dağıtma programı

Yazı Tarihi : 31 Mayıs 2008

Yüksek performanslı kart karma ve dağıtma programı kaynak kodları. C dilinde yazılmış olan Yüksek performanslı kart karma ve dağıtma programı kaynak kodları. Göstericiler, yapılar kullanılarak yüksek performans hedeflenmiştir.

//Boteki.com
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

struct kart {
   const char *taraf;
   const char *takim;
};

typedef struct kart Kart;

void desteDoldur( Kart * const, const char *[],
               const char *[] );
void desteyiKar( Kart * const );
void dagit( const Kart * const );

int main()
{
   Kart deste[ 52 ];
   const char *taraf[] = { “as”, “iki”, “uc”,
                          “dort”, “bes”,
                          “alti”, “yedi”, “sekiz”,
                          “dokuz”, “on”,
                          “vale”, “kiz”, “papaz”};
   const char *takim[] = { “kupa”, “karo”,
                          “sinek”, “maca”};

   srand( time( NULL ) );

   desteDoldur( deste, taraf, takim );
   desteyiKar( deste );
   dagit( deste );
   getch();
   return 0;
  
}

void desteDoldur( Kart * const wDeste, const char * wTaraf[],
               const char * wTakim[] )
{
   int i;

   for ( i = 0; i <= 51; i++ ) {
      wDeste[ i ].taraf = wTaraf[ i % 13 ];
      wDeste[ i ].takim = wTakim[ i / 13 ];
   }
}

void desteyiKar( Kart * const wDeste )
{
   int i, j;
   Kart gecici;

   for ( i = 0; i <= 51; i++ ) {
      j = rand() % 52;
      gecici = wDeste[ i ];
      wDeste[ i ] = wDeste[ j ];
      wDeste[ j ] = gecici;
   }
}

void dagit( const Kart * const wDeste )
{
   int i;

   for ( i = 0; i <= 51; i++ )
      printf( “%5s %-8s%c”, wDeste[ i ].takim,
              wDeste[ i ].taraf,
              ( i + 1 ) % 2 ? ‘\t’ : ‘\n’ );
}

"C’de kart karma ve dağıtma programı" yazısı için Bir yorum Yazılmış

  1. wireless 3 Haziran 2008 tarihinde demiş ki:

    Bu soruyu görünce yorum yazmadan geçemedim…

    Mantığı biraz karışık bir soru…

Sizde yorumunuzu bizimle paylaşın