परिचय
इस समस्या में, दो संख्याएं दी गई हैं। उन संख्याओं का आधार n है। हमें उन संख्याओं के जोड़ का परिणाम बेस n में भी ढूंढना है।
सबसे पहले, संख्याओं को दशमलव संख्याओं में बदला जाता है। दशमलव मानों से, हम उन्हें केवल जोड़ सकते हैं। अंत में, संख्याओं को फिर से बेस n संख्या में बदला जाता है।
bेस n संख्याओं को एक स्ट्रिंग के रूप में दिया जाता है, क्योंकि उन संख्याओं के लिए, जिनका आधार 9 से अधिक है, उनमें संख्याओं को दर्शाने के लिए कुछ वर्णमाला अक्षर हो सकते हैं, जैसे हेक्साडेसिमल संख्याओं में, 6 अक्षर (A-F) होते हैं।
इनपुट और आउटपुट
इनपुट: एक संख्या प्रणाली का आधार: 16 पहली संख्या 2C दूसरी संख्या 5F आउटपुट: जोड़ का परिणाम है: 8B
एल्गोरिदम
baseNtoDec(number, base)
इनपुट: बेस N की संख्या स्ट्रिंग, बेस N का मान।
आउटपुट: बेस N में संख्या का दशमलव समतुल्य।
Begin
len := number की लंबाई
power := 1
num := 0
i := len -1 से 0 तक नीचे, करें
यदि number[i] >= base, तो
अमान्य संख्या लौटाएं
num := num + number[i] * power
power := power * base
done
num लौटाएं
End
decToBaseN(dec, base)
इनपुट: दशमलव संख्या, बेस N जिसमें दशमलव संख्या को बदलना है।
आउटपुट: बेस N की संख्या स्ट्रिंग।
Begin
जब तक dec > 0, करें
res := (dec mod base) को res के साथ संयोजित करें
dec := dec / base
done
परिणाम को उल्टा करें
res लौटाएं
End
addBaseN(num1, num2, base)
इनपुट: बेस N में दो संख्याएं, बेस N का मान।
आउटपुट: बेस N में जोड़ के बाद संख्या।
Begin
dec1 := baseNtoDec(num1, base)
dec2 := baseNtoDec(num2, base)
sum := decToBaseN(dec1 + dec2, base)
sum लौटाएं
End
उदाहरण (C++ कोड)
#include <iostream>
#include <algorithm>
using namespace std;
int getVal(char c) {
if (c >= '0' && c <= '9')
return int(c - '0'); // दी गई संख्या का दशमलव मान
else
return int(c - 'A' + 10); // अल्फान्यूमेरिक संख्याओं के लिए
}
char revVal(int n) {
if (n >= 0 && n <= 9)
return char(n + '0'); // दी गई संख्या का वर्ण मान
else
return char(n + 'A' - 10); // अल्फान्यूमेरिक संख्याओं के लिए, दशमलव से वर्ण प्राप्त करें
}
int baseNtoDec(string number, int base) {
int len = number.size();
int power = 1;
int num = 0;
for (int i = len - 1; i >= 0; i--) {
// अंतिम अंक से पहले अंक तक
if (getVal(number[i]) >= base)
return INT_MIN; // जब कोई अंक >= आधार हो, तो त्रुटि के रूप में -ve infinity लौटाएं
num += getVal(number[i]) * power;
power = power * base;
}
return num;
}
string decToBaseN(int dec, int base) {
string res = ""; // खाली स्ट्रिंग
while (dec > 0) {
res += revVal(dec % base);
dec /= base;
}
reverse(res.begin(), res.end()); // अंतिम उत्तर प्राप्त करने के लिए स्ट्रिंग को उल्टा करें
return res;
}
int main() {
int base;
string num1, num2, sum;
cout << "Enter Base: "; cin >> base;
cout << "Enter first number in base " << base << ": "; cin >> num1;
cout << "Enter second number in base " << base << ": "; cin >> num2;
sum = decToBaseN((baseNtoDec(num1, base) + baseNtoDec(num2, base)), base);
cout << "The result of addition is: " << sum;
}
आउटपुट
Enter Base: 16 Enter first number in base 16: 2C Enter second number in base 16: 5F The result of addition is: 8B