Anasayfa

C ve Sistem Programcıları Derneği

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

menü

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

e-posta ile bilgilendirme.

Derneğimizdeki etkinliklerden haberdar olun!

Haber mektubu üyeliğiniz

Kimler çevrimiçi

Şu an 0 kullanıcı ve 3 ziyaretçi çevrimiçi.
""
dreamhost
Anasayfa

Fonksiyon Nesnelerinin Kullanımı - Belirli aralıkta Bir Kez Rastgele Değer Üreten Fonksiyon

26.03.2010 - 12:26 tarihinde nerg gönderdi

Aşağıdaki Random sınıfı fonksiyon nesnelerinin kullanımına güzel bir örnek oluşturuyor. Random isimli sınıfın iki private elemanı üretilecek rastgele sayıların en düşük ve en yüksek değerlerini tutuyor. Sınıfın kurucu fonksiyonu ile bu değerler dışarıdan alınıyor. Sınıfın diğer elemanı ise standart set sınıfından bir nesne. set içinde aynı değerden yalnızca bir tane tutulabilir değil mi? Sınıf için fonksiyon çağırma operatörü yükleniyor. Bu fonksiyon içinde standart rand fonksiyonu ile belirli aralıkta rastgele sayı üretiliyor ve bu sayı sete eklenmeye çalışılıyor. Ekleme başarısız olduğu sürece bu işlem yineleniyor. Ekleme işleminin başarısı için set sınıfının insert fonksiyonunun geri dönüş değerinden faydalanılıyor.

Eğer artık üretilecek başka bir değer kalmamışsa fonksiyon içinde logic_error sınıfı türünden bir hata nesnesi gönderiliyor.

Örnek ekran çıktısı: 

41 85 72 38 80 69 65 68 96 22 49 67 51 61 63 87 66 24 83 71 60 64 52 90 31 23 99
94 11 25 15 13 39 97 19 76 12 33 18 92 35 74 0  95 32 37 45 57 5  86 8  54 75 70 2
9  58 46 17 3  48 77 59 62 2  78 7  84 47 34 21 20 9  28 100 93 4 79 81 98 91 82 1 42
88 53 56 44 73 30 89 55 40 10 27 43 16 6 26 14 36 50

Kaynak kod: 
#include <iostream>
#include <set>
#include <stdexcept>
 
using namespace std;
 
class Random {
    const int m_low, m_high;
 
    std::set<int> mset;
public:
    Random(int l, int h): m_low(l), m_high(h){}
    int operator()();
};
 
 
int Random::operator()()
{
    const int dif = m_high - m_low + 1;
    if (mset.size() == dif)
        throw logic_error("no more random numbers in class Random");
    int val;
    while (!mset.insert(val = rand() % dif + m_low).second)
        ;
 
    return val;
}
 
int main()
{
    Random urand(0, 100);
 
    for (int k = 0; k < 101; ++k)
        cout << urand() << " ";
 
    return 0;
}
  • Yazıcı uyumluYazıcı uyumlu
  • Arkadaşa gönderArkadaşa gönder
  • PDFPDF
Etiketler:
  • C++
  • fonksiyon nesneleri

Adres: 2.Taşocağı Cd. Oğuz Sk. Barbaros Apt. No: 11/4 PK: 34387  Mecidiyeköy / İSTANBUL Tel: (212) 274 63 60  (212) 274 99 89  (212) 275 88 97  (212) 288 35 20 Fax: (212) 275 88 97 E-Posta: csystem@csystem.org

İçerik yayınları
Fervens Drupal theme by Leow Kah Thong. Designed by Design Disease and brought to you by Smashing Magazine.