Başlangıç > Kodlar > C dilinde spor loto kodları

C dilinde spor loto kodları

Süper Loto, 1-54 sayı kümesi içinden çekilişle belirlenecek olan 6 sayının doğru tahmin edilmesine dayanan bir şans oyunudur. Ödül kazanmak için 3 veya daha fazla sayıyı doğru tahmin etmek gereklidir. Bir kişinin, bilgisayara karşı Süper Loto oynayabilmesine ve sonuçlar üzerinde bazı istatistikler bilgiler elde edebilmesine yarayacak bir programdır.Program ilk çalıştırıldığında, rasgele sayı üreticisi için besleme/çekirdek (seed) değeri kullanıcıdan alınır.


#include <stdio.h>
#include <stdlib.h>
#define BOYUT 54
#define SECENEK 6
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////1.SİNİF ALGORİTMA VE PROGRAMLAMA DERSİ-ODEV 4///////////////////////////
//////////////Konu:Dizi ve Fonksiyon Kullanimi///////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void menu(int,int,int array[],int tercih[],int puan[]);//fonksiynlar tanimlaniyor…
void alt_menu(int ,int,int array[],int tercih[],int puan[]);//dizi ve sayilar (gonderilenler) belirtiliyor
int super_loto(int,int,int array[],int tercih[],int puan[]);
int sayisini_bul(int [],int []);
int bubble_sort(int []);
int bubble_sort2(int []);
void yer_degistir(int *, int *);//fonksiyona pointer gonderiliyor..
int diziyi_yazdir(int []);
int kosullu_yazdir(int []);
int odul_sayisi(int []);
void en_coktercih(int []);
int kackeze_gore(int [],int []);
int main()
{
int toplam_odul=0;
int static array[BOYUT]={0};//static sayesinde program acildiginda dizilere sifir atanir
int static tercih[BOYUT]={0};//ve sadece bir kez yaratilir
int static puan[4]={0};//odullerin sayisini bulmak amaciyla yazilmis bir dizi
unsigned besleme=0;//Baslangicta sifir atariz…
//menuye gonderilmek uzere bir kez besleme alinir
printf(“Beslemeyi giriniz:\n”);
scanf(“%u”,&besleme);
srand(besleme);//srand(tohum) fonksiyonu, rand() tarafindan uretilecek sayi icin bir başlangic
noktasi ayarlar.
menu(besleme,toplam_odul,array,tercih,puan);//deger dondurmeyen fonksiyon cagiriliyor…
return 0;
}
void menu(int besleme,int toplam_odul,int array[],int tercih[],int puan[])//parametre dondurmeyen
fonksiyon
{ int secim;
char cikis;
do{ printf(“\n Ana Menu\n”);
printf(“1. Super Loto (6/54) Oynama\n”);
printf(“2. Istatistikleri Goruntuleme\n”);
printf(“3. Cikis\n”);
do{
printf(“(Toplam odulunuz:%d puan) Seciminizi giriniz:\n”,toplam_odul);
scanf(“%d”,&secim);
}while(secim<1 || secim>3);//Dogru giris yapilincaya kadar beklenir…
switch(secim)
{ case 1: //fonksiyonlara dizi ve sayilar gonderiliyor…
super_loto(besleme,toplam_odul,array,tercih,puan);//fonksiyon cagiriliyor…
case 2:
alt_menu(besleme,toplam_odul,array,tercih,puan);//fonksiyon cagiriliyor…
case 3:
do{//cevap dogru girilinceye kadar bekleniyor…
printf(“Cikmak istediginize emin misiniz(e/E/h/H)?:”);
fflush(stdin);
cikis=getchar();
}while (cikis != ‘e’ && cikis != ‘E’ && cikis!=’h’ && cikis!=’H’);
}
}while(cikis == ‘H’ || cikis == ‘h’);//cikilmak istenmiyorsa basa donuluyor…
}
int super_loto(int besleme,int toplam_odul,int array[],int tercih[],int puan[] )//oyunun oynandigi
fonksiyon
{ char devam;
do{//rand() 0-MAX degeri arasindan sectigi sayilari alma islemi
int i,a;//her oyunda tahminlere sifir ataniyor
int sayi[6]={0};//ve bilgisayar tekrar sayi belirliyor…
int tahmin[6]={0};//tahminlere sifir ataniyor…
int dogru_tahmin=0;
for(i=0;i<=5;i++)
{ sayi[i]=1+(rand()%54);//sayilarin 54den buyuk olmasi engelleniyor…
if(i>0)//sayilarin ayni olmamasi saglaniyor..
for(a=0;a<=(i-1);a++)
{while(sayi[a]==sayi[i])
{sayi[i]=1+rand()%54;} }}
sayisini_bul(array,sayi);//hangi sayinin kac kez ciktigini sayan fonksiyon cagiriliyor..
printf(“Alti tane sayi girin\n”);
for(i=0;i<6;i++)//tahminler aliniyor…
{ {printf(“%d.Sayiyi girin:\n”,i+1);
scanf(“%d”,&tahmin[i]);}
while(tahmin[i]<1 || tahmin[i]>54)//hata mesaji veriliyor..
{printf(“Hatali giris yaptiniz.[0-54] araliginda bir deger girin.\n”);
scanf(“%d”,&tahmin[i]);}
if(i>0)
for(a=0;a<=(i-1);a++)
{while(tahmin[a]==tahmin[i])//ayni olup olmadigi kontrol ediliyor…
{printf(“Ayni sayiyi girdiniz.tekrar giris yapin.\n”);
scanf(“%d”,&tahmin[i]);} }
}
for(i=0;i<6;i++)//tahminler ve sayilar karsilastiriliyor…
{ for(a=0;a<=5;a++)
{if (sayi[i]==tahmin[a])
{ dogru_tahmin++;}
}}
sayisini_bul(tercih,tahmin);//tahmin edilen sayilarin miktari hesaplanmak uzere fonksiyona
gonderiliyor…
bubble_sort(tahmin);//tahmin ve sayi adli diziler buyukten kucuge siralaniyor
bubble_sort(sayi);
printf(“\nBilgisayarin belirledigi sayilar Tahminleriniz\n”);
printf(“\n——————————– ————-\n”);
for(i=0;i<=5;i++)
{ printf(“%17d %24d\n”,sayi[i],tahmin[i]);
}
switch(dogru_tahmin)//dogru tahmin sayisina gore odul belirleniyor ve kac kez kazanildigi
sayiliyor…
{ case 0:case 1: case 2: printf(“Dogru tahmin sayisi:%d ve odul
kazanamadiniz.\n”,dogru_tahmin);
break;
case 3: printf(“Dogru tahmin sayisi:3 ve kazandiginiz odul:1 puan\n”);
toplam_odul=toplam_odul+1;
puan[0]++;
break;
case 4: printf(“Dogru tahmin sayisi:4 ve kazandiginiz odul:3 puan\n”);
toplam_odul=toplam_odul+3;
puan[1]++;
break;
case 5: printf(“Dogru tahmin sayisi:5 ve kazandiginiz odul:10 puan\n”);
toplam_odul=toplam_odul+10;
puan[2]++;
break;
case 6: printf(“Dogru tahmin sayisi:6 ve kazandiginiz odul:50 puan\n”);
toplam_odul=toplam_odul+50;
puan[3]++;
break;
}
printf(“Toplam odulunuz:%d puandir\n”,toplam_odul);
devam=’ ‘;//asagidaki dongu, do-while ile yapilirsa buna gerek yok
while (devam!=’e’ && devam!=’E’ && devam!=’h’ && devam!=’H’)//bir kez daha oynamak isteyip
istemedigi
{ //soruluyor..
printf(“Bir kere daha oynamak ister misiniz(e/E/h/H)?\n”);
fflush(stdin);
devam=getchar();
}
if(devam==’h’||devam==’H’)
menu(besleme,toplam_odul,array,tercih,puan);//cevap hayir ise menu fonk cagiriliyor…
} while (devam==’e’ || devam==’E’);
return 0;
}
void alt_menu(int besleme,int toplam_odul,int array[],int tercih[],int puan[])//menu fonksiyonu…
{ int secim=0;
printf(” \n Istatistik Alt Menusu\n”);//menu yazdiriliyor..
printf(“1. Cekilislerde cikan sayilarin, kac kez ciktiklarinin listelenmesi\n”);
printf(“2. Cekilislerde en az 1 kez cikan sayilarin, kac kez ciktiklarina gore sirali olarak
listelenmesi\n”);
printf(“3. Oyuncunun hangi odulleri kacar kez kazandiginin listelenmesi\n”);
printf(“4. Oyuncunun en cok tercih ettigi 3 sayinin listelenmesi\n”);
printf(“5. Ana Menu\n”);
printf(“Seciminizi giriniz:\n”);
scanf(“%d”,&secim);
while(secim<1 || secim>5)//secim kontrol ediliyor ve hata mesaji veriliyor…
{ printf(“Hatali veri girisi! [1-5] araliginda bir sayi girin\n”);
scanf(“%d”,&secim);}
switch(secim)
{ case 1://sayilar ve kac kez ciktiklarini yazdirmak icin gerekli fonklar cagiriliyor…
printf(“\nSayi Kac Kez Cubuk Grafik\n”);
printf(“\n—- ——- ————\n”);
diziyi_yazdir(array);//dizi yazdiriliyor…
alt_menu(besleme,toplam_odul,array,tercih,puan);//alt menuye donuluyor…
break;
case 2:
printf(“\nSayi Kac Kez Cubuk Grafik\n”);
printf(“\n—- ——- ————\n”);
bubble_sort2(array);//dizi siralaniyor…
kosullu_yazdir(array);//degeri 1’den buyuk olanlar yazdiriliyor
alt_menu(besleme,toplam_odul,array,tercih,puan);//islem bitince alt menu cagiriliyor…
break;
case 3:
odul_sayisi(puan);//odul sayisini yazdiran fonk cagiriliyor…
alt_menu(besleme,toplam_odul,array,tercih,puan);//tekrar alt menuye donuluyor…
break;
case 4:
en_coktercih(tercih);//gereken fonk cagiriliyor…
alt_menu(besleme,toplam_odul,array,tercih,puan);//alt menuye donus;
break;
case 5:
menu(besleme,toplam_odul,array,tercih,puan);//ana menu cagiriliyor…
break;
}
}
int diziyi_yazdir(int array[])//gonderilen dizi yazdiriliyor…
{int i=0;
int row,j;
row=0;
for(i=0;i<54;i++){
printf(“%2d%8d “,(i+1),array[i]);
for(j=0;j<array[i];j++)
{ printf(“*”);}
printf(“\n”);
row++;
if(row==20 || row==43 || row==54)//satir sayisi belirleniyor…
{ printf(“Diger sayfaya gecmek icin herhangi bir tusa basin\n”);
getche(); }//gecis saglaniyor…
}
return 0;
}
int kosullu_yazdir(int array[])//gonderilen dizide 1’den buyuk degerlere sahip olanlar yazdiriliyor…
{int i=0;
int row,j,max[54];
kackeze_gore(array,max);
row=0;
for(i=0;i<54;i++){
if(array[i]>=1){
printf(“%2d%8d “,max[i],array[i]);
for(j=0;j<array[i];j++)
{ printf(“*”);}
printf(“\n”);
row++;
if(row==20 || row==43 || row==54)//satir sayisina gore gore sayfa atlaniyor…
{ printf(“Diger sayfaya gecmek icin herhangi bir tusa basin\n”);
getche();}
}}
return 0;
}
int sayisini_bul(int array[],int sayi[])//sayi mikltarini bulan fonk..
{ int a,i;
for(i=0;i<SECENEK;i++)
{a=sayi[i];//sayi dizisindeki elmenin kac kez yazildigi sayiliyor…
array[a-1]++;}
return 0;
}
void yer_degistir(int *sayi1, int *sayi2)//iki ptr nin yer degistirmesi amaciyla yazilmstir…
{int gecici=0;
gecici=*sayi1;
*sayi1=*sayi2;
*sayi2=gecici;
}
int bubble_sort(int array[])
{int yer_degisti,i;//kabarcik siralama islemini erken bitirmek icin kullanilacak
do{
yer_degisti=0;
for(i=0;i<(SECENEK-1);i++)
{ if(array[i]>array[i+1])
{ yer_degistir(&array[i],&array[i+1]);//yer degitir fonk nu gerekli ptr ler gonderilerek
cagiriliyor…
yer_degisti=1;}// en az bir kez yer degistirme islemi yapildi…
}
}while(yer_degisti==1);
return 0;
}
int bubble_sort2(int array[])//hem degerler hem de karakterler yer degistiriyor…
{int yer_degisti,i;
int gecici,sayi1,sayi2;
int gecici_sayi=0;
do{
yer_degisti=0;
for(i=0;i<4;i++){
if(array[i]<array[i+1]) {
gecici_sayi=array[i];//Isaretlenme sayisi yer degistiriliyor
array[i]=array[i+1];
array[i+1]=gecici_sayi;
sayi1=i;
sayi2=(i+1);
gecici=sayi1;//Karakter yer degistiriliyor
sayi1=sayi2;
sayi2=gecici;
yer_degisti=1;//En az 1 kez yer degistirme islemi yapildi
}
}
}while(yer_degisti==1);
return 0;
}
int odul_sayisi(int puan[])//oduller ve kac kez kazanildiklari yazdiriliyor…
{ printf(“\nDogru Tahmin Sayisi Kazandigi Odul Sayisi Kazandigi Odul Puani\n”);
printf(“\n——————- ——————– ——————–\n”);
printf(“%10d%22d%23d\n”,3,puan[0],puan[0]);
printf(“%10d%22d%23d\n”,4,puan[1],(3*puan[1]));
printf(“%10d%22d%23d\n”,5,puan[2],(10*puan[2]));
printf(“%10d%22d%23d\n”,6,puan[3],(50*puan[3]));
return 0;
}
void en_coktercih(int array[])//tahminlerde en cok tercih edilen 3 deger bulunuyor…
{ int a,max[54];
printf(“\nSayi Oynanma Sayisi\n”);
printf(“\n—- ————–\n”);
kackeze_gore(array,max);
for(a=0;a<3;a++)//isaretlenme sayisina gore miktar olarak ilk uctekiler yazdiriliyor…
{ printf(“%3d%11d\n”,max[a],array[a]);
}
}
int kackeze_gore(int array[],int max[])//kac kez cıkma sayisina gore siralama…
{ int i;
int gecici_sayi,yer_degisti;
int gecici_char;
for(i=0;i<54;i++)
{max[i]=(i+1);}//karakterler diziye aktariliyor…
do{
yer_degisti=0;
for(i=0;i<54;i++){
if(array[i]<array[i+1]) {
gecici_sayi=array[i];//Isaretlenme sayisi yer degistiriliyor
array[i]=array[i+1];
array[i+1]=gecici_sayi;
gecici_char=max[i];//karakter adi yer degistiriliyor
max[i]=max[i+1];
max[i+1]=gecici_char;
yer_degisti=1;//En az 1 kez yer degistirme islemi yapildi
}
}
}while(yer_degisti==1);
return 0;
}

Reklamlar
  1. Henüz yorum yapılmamış.
  1. No trackbacks yet.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s

%d blogcu bunu beğendi: