C++ ile Çok Büyük Sayıları Toplamak
İki sayıyı C/C++ programlama dillerinde belli bir uzunluğa kadar toplayabiliyoruz. Örneğin 30 basamakli iki sayıyı toplamak varolan tiplerle imkansız. Peki bu işlemi nasıl yaparız? Aslında burada kullanılan mantık basit. String olarak iki sayıyı alıp, tersine çevirip basamak basamak yani her defasında birer tane alıp tamsayıya çevirerek toplamaktan ibaret.
Burada kullanılan push_back fonkisyonu vektörün sonuna yeni eleman eklemek için kullanılıyor. Kendi veri yapınızı kullanarak da aynı işlemi yapabilirsiniz. Vektörlerin kullanımı ile ilgili bilgilere sayfanın sonundaki kaynaktan bakabilirsiniz.
#include <iostream>
#include <algorithm>
using namespace std;
void yerdegistir(string *x,string *y)
{
string gecici;
gecici=*x;
*x=*y;
*y=gecici;
}
string buyukSayiTopla(string n1, string n2) {
if (n1.length() > n2.length())
yerdegistir(&n1, &n2);
string strToplam = "";
int uzunluk1 = n1.length();
//string cinsinden uzunluğu buluyoruz
int uzunluk2 = n2.length();
//string cinsinden uzunluğu buluyoruz
int fark = abs(uzunluk1 - uzunluk2);
//Basamak farkını buluyoruz
int eldeki = 0;
int toplam;
for (int i=uzunluk1-1; i>=0; i--) {
toplam = ((n1[i]-'0') + (n2[i+fark]- '0') + eldeki);
strToplam.push_back(toplam%10 + '0');
eldeki = toplam/10;
}
for (int i=fark-1; i>=0; i--) {
toplam = ((n2[i]-'0')+eldeki);
strToplam.push_back(toplam%10 + '0');
eldeki = toplam/10;
}
if (eldeki)
strToplam.push_back(eldeki+'0');
reverse(strToplam.begin(), strToplam.end());
return strToplam;
}
int main() {
string s1 = "111111111111111111";
string s2 = "111111111111111119";
cout<<"Iki buyuk sayinin toplami: "<<buyukSayiTopla(s1, s2);
return 0;
}
Bu sayfada yer alan kodlar Jetbrains firmasının Clion IDE'si ile yazılmıştır, Eclipse veya Netbeans gibi IDE'ler kullanabilirsiniz. C++ derleyicisi olarak MinGW kullanılmaktadır. Başka C++ derleyicileri kullandığınızda bu kodlarda yer alan komutların bulunduğu kütüphaneler farklı olabilir. İlgili komutları kendi derleyicinizin dökümanlarına bakarak projenize dahil ettiğinizde çalışacaktır.
KAYNAKLAR
C++ dilinde push_back fonkisyonu
https://www.cplusplus.com/reference/vector/vector/push_back/
Aşağıdaki kaynaktan diğer yöntemlere bakabilirsiniz.
https://www.geeksforgeeks.org/sum-two-large-numbers/
Mutlu kodlamalar,
Ocak 2021
Oğuzhan TAŞ
- Csharp(58)
- Csharp Formlar(23)
- Web Tasarım(9)
- CSS(27)
- JavaScript(37)
- PHP(50)
- Laravel(3)
- ASP.net(38)
- Excel(15)
- Güvenlik(4)
- E-Ticaret(3)
- Kariyer(5)
- SQL Server(29)
- MySQL(16)
- Linux(17)
- MacOSX(8)
- Ayarlar(12)
- Bilgisayar Ağları(3)
- Symfony(1)
- Teknoloji(7)
- VBS(1)
- Arduino(6)
- RaspberryPi(1)
- Algoritmalar(15)
- HTML(3)
- Python(2)
- Bash Script(7)
- C Programlama(10)
- Flutter - Dart(11)
- Bootstrap(1)
- :: Excelde EĞER Fonksiyonu Kullanımı...
- :: Csharp ile Access Veritabanı Bağlan...
- :: SQL nedir, Temel SQL Komutları nele...
- :: Hangi Linux Dağıtımı?
- :: OSX İşletim Sistemine PHP, MySQL, A...
- :: Excel Hesap tablosunda EĞERSAY Fonk...
- :: PHP dilini kullanarak MySQLi tekniğ...
- :: Excel Hesap tablosunda ÇOKETOPLA Fo...
- :: Excel Hesap tablosunda ETOPLA Fonks...
- :: Excel Hesap tablosunda ÇOKEĞERSAY F...
- :: Hangi Programlama Dilini Öğrenmeliy...
- :: Mac Bilgisayarınıza Windows 7 Yükle...
- :: PHP ile Basit Dosya Yükleme
- :: C# Programlama Dili ile İlgili Örne...
- :: Excel hücrelerinde yıldız koyarak b...
- :: PHP Dili kullanarak MySQLi Tekniği ...
- :: PhpMyAdmin Şifresi Nasıl Değiştiril...
- :: Hangisi acaba, PHP mi ASP.NET mi ?