Şimdi Ara

C/C++ ta sınırsız büyüklükte sayılar!

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
5
Cevap
0
Favori
1.422
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar sık sık c/c++ ile büyük basamaklı sayılar hakkında soru geliyor. Bu konuyu çözüme kavuşturmanın yararlı olacağını düşündüm ve böyle bir konu açtım.

    Bildiğiniz gibi java ve c# gibi kütüphanesi gelişmiş olan dillerde yerleşik olarak BigInteger gibi büyük sayıları tutabilen veri tipleri bulunur. C/C++ standartında böyle bir olanağın olmaması gerçekten büyük kayıp. Neyse ki harici kütüphaneler ile bu sorun giderilebiliyor.

    Kütüphanemiz GMP (GNU Multiple Precision). Linux ortamında sıklıkla kullanılan dünyanın en hızlı bignum kütüphanesi ama windows için neredeyse hiç desteği yok. Öyle ki adamakıllı derlenmiş olanını bile bulamadım. Bir tane buldum ama sorun çıkaracak gibiydi. Bende kaynak kodunu komple derledim son çare olarak.

    GMP yi dev-c++ gibi tarihi eser kıvamındaki bir IDE (ve derleyici) de değil, güncel bir ortamda çalıştıracağız. Böylece dev-c++ kullananlar ondan kurtulabilirler. Önce aşağıdaki bağlantıdan derleyicimizi indiriyoruz. Bağlantı yolu takip edilerek çıkan yeni sürümler bulunabilir.
    http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/

    Zip'i kök dizine (C:\, D:\ veya herneyse) açıyoruz. Şöyle birşey olacak: C:\mingw\. Sonra Denetim masası->Gelişmiş sistem ayarları nda Gelişmiş sekmesine geçiyoruz. Ortam değişkenleri var, onu tıklayıp çıkan pencerede "Path" değişkenini çift tıklayıp açıyoruz. Değerin en sonuna C:\mingw\bin ekleyip tamam diyoruz. Derleyici kurulumu bu kadar. Şimdi şuradan kütüphaneyi indirip belirttiğim yerlere dosyaları kopyalayalım.
    32 bit:http://s3.dosya.tc/server4/gZyfBy/gmp5.0.5-32.zip.html
    64 bit:http://s2.dosya.tc/server20/vcxYrk/gmp5.0.5-64.zip.html

    Bunun içindekiler -> buraya
    gmp 5.0.5-xx\bin -> C:\mingw\bin
    gmp 5.0.5-xx\include -> C:\mingw\xxx-w64-mingw32\include
    gmp 5.0.5-xx\lib -> C:\mingw\xxx-w64-mingw32\lib

    Son olarak IDE lazım o da codeblocks olsun, aşağıda.
    http://sourceforge.net/projects/codeblocks/files/Binaries/10.05/Windows/codeblocks-10.05-setup.exe

    Kurunca menüden settings->compiler and debugger->toolchain executables bölümünde derleyicinin yeri görünmesi lazım. Yanlış ise c:\mingw olarak düzeltiyoruz. Altındaki exe ler ise şöyle olacak.
    gcc
    g++
    g++
    ... gerisi önemli değil.

    Ok deyip çıkalım ve bir c++ projesi başlatalım (File->New->Project->Console application). Sol tarafta projemizin simgesi var ona sağ tıklayp "build options" ı seçelim. Linker settings tab ına geçip aşağıdan add ile önce "libgmpxx.a", sonra da "libgmp.a" (tırnaklar yok) yazıp ekleyelim.

    Nihayet bir örnek yazıp deneme zamanı geldi. Aşağıdaki kodu main.cpp ye kopyalayıp build e basarak derliyoruz. Sorunsuz olarak derlenirse iki tane büyükçe sayı girip deneyin.

     
    #include <iostream>
    #include <gmpxx.h>
    using namespace std;

    int main()
    {
    mpz_class a, b;

    cin >> a;
    cin >> b;
    cout << a * b << endl;

    return 0;
    }


    Sorun yoksa kurulum başarılı demektir. Kullanımı içinhttp://gmplib.org/manual/ bağlantısında gerekli bilgiler var. Zaten oldukça basit. Sorunuz olursa sorabilirsiniz.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 8 Ekim 2012; 11:01:33 >







  • Eline sağlık dostum, çok güzel bir çözüm üretmişsin. Emeğine sağlık
  • lk/e568vrngfb v f



    < Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 16:53:46 >
  • MiniGW disinda CYGWIN kullanip, linux destegi olan libraryleri windowsta compile edebilirsiniz
  • herhangi bir kütüphane kullanmadan C# ta nasıl sınırsız sayılarla işlem yapabiliriz. Big int vb şeylerde olmayacak. string dizisi şeklinde düşündümde bunu nasıl uygulayacağımı bulamadım
  • Yapay Zeka’dan İlgili Konular
    c'de yardım
    14 yıl önce açıldı
    C# ve Php aynı anda gider mi ?
    12 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.