www.fatihkabakci.com

Personal Website and Computer Science TUR EN

C PLUS DA SAYISAL LOTO TASARIMI

Last update: 2/25/2012 2:40:00 AM

Yazan ve Cevaplayan:Fatih KABAKCI

Bu soru Chip Online sayfasında 15.02.2010 tarihinde enteqre adlı kullanıcı tarafından sorulmuştur.

Gelen Soru: arkadaşlar benim sayısal loto yapmam gerkiyor..1 den 49 a kadar olan sayılar 6 sıra 6 sütün şeklinde atanacak.. sayıların hiç biri aynı olmayacakmış....ben bir iki örneğe baktım ama c++ yeni öğreniyoruz...randm döngüsüne göre olması gerektiğini söyledi bna hocam ama yapamadım..yardımcı olursanız çok sevinirim...

Verilen Cevap:

Sayısal loto günümüzde bir çok insan tarafından oynanan şansa dayalı bir oyun sistemidir.Oyun 1-49 arasındaki numaraları ilgili haftanın çekiliş sonucları sonucunda tahmin etmekten geçer.Eger oyuncu 6 adet numara bilirse buyuk odulu kazanmıs olacaktır.Bir sayısal loto kuponunda en fazla 6 adet kolon ve her bir kolonun icerisinde 1'den 49'a kadar sayı degerleri iceren kutucuklar bulunur.Oyuncu bu ust limit degerlerine gore kuponunu doldurarak sonucu beklemeye başlar.Oyunun kısa bir hatırlatmasını yaptıktan sonra asıl problemimiz olan bu oyunu C++ programlama dili ile tasarlamaya calısacagız.

Oncelikle nesneye dayalı bir dil sectigimize gore programı nesneye dayalı programlama mantıgı ile işlemekte yarar goruyorum.Ilk olarak loto adında bir class olusturalım ve bu class'ın niteliklerini belirmeye calısalım.

Daha onceden de hatırlatıldıgı gibi bir sayısal loto kuponu uzerinde 6 adet kolon ve her bir kolon yapısında 49 adet sayısal degerler bulunmaktadır.O halde iki boyutlu bir dizi(two-dimensional array) tanımlamak yerinde bir karar olacaktır.Tanımlanacak bu dizi kullanıcının kuponunu simgeleyen bool tipinde bir dizi olacaktır.Girilen numaralar ise,dizi indeksine yerleştirilerek ilgili indeks degeri true olarak saklanacaktır.Oyunun oynanış mantıgında aslında cok basittir.Kullanıcı oynamak istedigi kolon adedini girerek numaralari hayali bir kuponda işaretleyecektir.Ornegin A kolonunda 23 numaralı degeri giren kullanıcı aslında iki boyutlu kupon dizisinin A.kolonunun 23. indeks degerini true yapmıs olacaktır.

Oyunda birde çekiliş sonucundaki buyuk ikramiye numaralari yer almaktadır.Bu numaralar ise bir kurucu metot(constructor method) icerisinde nesne hazırlanırken tasarlanabilir.C ve C++ programlama dilleri icerisinde rastgele sayı uretici fonksiyon rand() fonksiyonudur.Bu fonksiyon aynı zamanda srand() fonksiyonu ile kullanılarak uretilen degerlerin farklılık oranına azaltıcı etki yapmaktadır. Sonuc olarak birde karsilastir() metodu ile oynan kupon kontrol edilecektir.Problemin C++ programlama dilindeki karsılıgı asagıdaki gibi olacaktır.
#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

class loto {

      bool kupon[6][49];
      int sonuc[6];
      int kolonSayisi,numara;
      char kolonHarfleri[6];
      public:
      loto();
      void oyna();
      void karsilastir();
      };

loto::loto() {

             int i,j;
             for(i=65;i<72;i++)
             kolonHarfleri[i-65]=i;

             for(i=0;i<6;i++)
             for(j=0;j<49;j++)
             kupon[i][j]=false;

             int topNumarasi;
             bool flag=false;
             srand(time(NULL));
             for(i=0;i<6;i++)
             {
             topNumarasi=rand() % 49 + 1;
             for(j=0;j<i;j++)
             if(topNumarasi==sonuc[j]) {
             flag=true; break;
             }
             if(flag)
             i--;
             else
             sonuc[i]=topNumarasi;
             flag=false;
             }
             }
void loto::oyna() {

     cout << "Lutfen Oynayacaginiz Kolon Sayisini Giriniz:\n";
     cin >> kolonSayisi;
     int i,j,k;
     bool flag=false;
     for(i=0;i<kolonSayisi;i++) 
     {
     cout << kolonHarfleri[i] << ".Kolonu icin 6 adet numara giriniz:\n";
     for(j=0;j<6;j++) 
     {
     cin >> numara;
     if(numara > 0 && numara < 50) 
     {
     for(k=0;k<j;k++)
     if(kupon[i][numara]) {
     flag=true; break;
     }
     if(flag) {
     cout << "Bir numara en fazla bir kez kullanilabilir,Lutfen tekrar giriniz:\n";
     j--;
     }
     else
     kupon[i][numara]=true;
     flag=false;
     }
     else {
     cout << "Lutfen 1-49 araliginda numaralar giriniz\n";
     j--;
     }
     }
     }
     }

void loto::karsilastir() {

     int say=0;
     int i,j;

     cout << "Sizin Kuponunuz\n";
     for(i=0;i<kolonSayisi;i++) 
     {
     for(j=0;j<49;j++)
     if(kupon[i][j])
     cout << j << ' ';
     cout << "\n" << kolonHarfleri[i] << "\n";
     }

     cout << "Haftanin Sansli Numaralari\n";
     for(i=0;i<6;i++)
     cout << sonuc[i] << ' ';


     for(i=0;i<kolonSayisi;i++) {
     for(j=0;j<6;j++)
     if(kupon[i][sonuc[j]])
     say++;
     cout << kolonHarfleri[i] << ".kuponda " << say << " adet numara bildiniz:";
     }
     }

int main() {
           loto yeni;
           yeni.oyna();
           yeni.karsilastir();
           getchar();
           return 0;   
}             
Başarılar
There has been no comment yet

Name:


Question/Comment
   Please verify the image




The Topics in Computer Science

Search this site for





 

Software & Algorithms

icon

In mathematics and computer science, an algorithm is a step-by-step procedure for calculations. Algorithms are used for calculation, data processing, and automated reasoning.

Programming Languages

icon

A programming language is a formal constructed language designed to communicate instructions to a machine, particularly a computer. It can be used to create programs to control the behavior of a machine. Java,C, C++,C#

Database

icon

A database is an organized collection of data. The data are typically organized to model aspects of reality in a way that supports processes requiring information.

Hardware

icon

Computer hardware is the collection of physical elements that constitutes a computer system. Computer hardware refers to the physical parts or components of a computer such as the monitor, memory, cpu.

Web Technologies

icon

Web development is a broad term for the work involved in developing a web site for the Internet or an intranet. Html,Css,JavaScript,ASP.Net,PHP are one of the most popular technologies. J2EE,Servlet, JSP,JSF, ASP

Mobile Technologies

icon

Mobile application development is the process by which application software is developed for low-power handheld devices, such as personal digital assistants, enterprise digital assistants or mobile phones. J2ME

Network

icon

A computer network or data network is a telecommunications network that allows computers to exchange data. In computer networks, networked computing devices pass data to each other along data connections.

Operating Systems

icon

An operating system is software that manages computer hardware and software resources and provides common services for computer programs. The OS is an essential component of the system software in a computer system. Linux,Windows

Computer Science

icon

Computer science is the scientific and practical approach to computation and its applications.A computer scientist specializes in the theory of computation and the design of computational systems.