Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
1422
Tıklama
0
Öne Çıkarma
C/C++ ta sınırsız büyüklükte sayılar!
G
13 yıl
Yarbay
Konu Sahibi

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 >

M
13 yıl
Yüzbaşı

Eline sağlık dostum, çok güzel bir çözüm üretmişsin. Emeğine sağlık


Bu mesaja 1 cevap geldi.
R
13 yıl
Yüzbaşı

lk/e568vrngfb v f





< Bu mesaj bu kişi tarafından değiştirildi rob dö şambır -- 30 Nisan 2013; 16:53:46 >
Bu mesaja 1 cevap geldi.
T
13 yıl
Yarbay

MiniGW disinda CYGWIN kullanip, linux destegi olan libraryleri windowsta compile edebilirsiniz


Bu mesaja 1 cevap geldi.
T
12 yıl
Yüzbaşı

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



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.