Я новичок в C++. Я пытаюсь использовать это длинное целочисленное умножение. Я не понимаю, как изменяется значение sum[3][0]
в последующем цикле цикла.длинное целочисленное умножение в C++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string num1, num2;
int i,j,l1, l2,temp,k;
cout << "Enter first number: ";
cin >> num1;
cout << "Enter second number: ";
cin >> num2;
l1= num1.size();
l2= num2.size();
cout << l1 << " " << l2 << endl;
int sum[l2-1][l2]; // 5 6 7 8 ---> num1
// 1 2 3 4 ---> num2
for(i=0; i<l1; i++) // ---------
num1[i]-='0'; // 2 2 7 1 2 sum[3][4]---->sum[3][0]
// 1 7 0 3 4 i.e sum[3][0] should be 2
for(i=0; i<l2; i++) // 1 1 3 5 6
num2[i]-='0'; // 5 6 7 8
// -------------
for(i=l2-1; i>=0; i--) // 7 0 0 6 6 5 2
{
k=0;
temp=0;
for(j=l1-1; j>=0; j--)
{
temp+=(num2[i]*num1[j]);
sum[i][k]= temp%10;
temp=temp/10;
k++;
}
sum[i][k]=temp;
cout << sum[3][0] << endl;
}
for(i=l2-1; i>=0; i--) // output is 2 2 7 1 1 Here value of sum[3][0] is 1 but the desired output is 2.
{ // 1 7 0 3 1
for(k=l2; k>=0; k--) // 1 1 3 5 0
cout << sum[i][k]; // 0 5 6 7 8
cout << endl;
}
return 0;
}
Я пробовал этот код для случая num1 = 5678 и num2 = 1234. Таким образом, сумма [3] [0] должна быть равна 2 в этом случае.
Просьба уточнить причину проблемы. Какой результат вы получаете, какой результат вы ожидаете и почему? – Petr
Я ожидаю, что сумма [3] [0] должна хранить 2 для упомянутого выше случая. Но я получаю 1 в качестве вывода. –
Что такое 'sum'? Что он представляет? –