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
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 >
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
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.
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 >