#c #pointers
#c #указатели
Вопрос:
У меня есть 2 очень больших числа, которые хранятся в указателях, например, хранится число: 1234567891234567891234567890: 123 456 789 012 345 678 901 234 567 890. С одним из этих больших чисел мне нужно выполнить умножение и сохранить его в другом указателе. cijfervakje — это одна из тех групп из 3. ggamp; object, является ли адрес тоже номером.
Я думаю, что проблема, с которой я столкнулся, заключается в том, что у меня нет доступа к cijvervakjes, корректным для больших чисел, но я не знаю, как это решить.
void gg::multi(gg amp; objectA, gg amp; objectB){
cijfervakje * helpA = objectA.exit;
cijfervakje* helpB = objectB.exit;
int numberA = 0; int numberB = 0; int carry = 0;
int ans; int length;
gg * helpLijst = new gg;
delete(); //empties the list where the answer will go.
while (helpA != nullptr || helpB != nullptr) {
numberA = 0; numberB = 0;
if(helpA != nullptr) {
numberA = numberA -> info;
helpA = helpA -> vorige;
}
if (helpB != nullptr) {
numberB = helpB -> info;
helpB = helpB -> vorige;
}
ans = numberA * numberB;
carry = 0; //Reset the carry
length = meetLengte(ans);
if(length > k) {
carry = ans / tienTotDeMacht(k); //determine first number.
ans -= carry * tienTotDeMacht(k); /// remove first number
}
addBefore(ans, length);
}
}
class cijfervakje {
public:
cijfervakje* vorige;
int info; //Geeft het getal in dit vakje.
int lengte; //Geeft de lengte van het getal in dit vakje.
cijfervakje* volgende;
};
если требуется какой-либо дополнительный код или объяснение, пожалуйста, спросите
Ответ №1:
Хорошо, некоторые из ваших вопросов не имеют смысла. Во-первых, не используйте указатели для вычисления. Хотя я не думаю, что это на самом деле то, что ты делаешь.
Вы используете указатели на объекты типа cijfervakje, но вы не предоставляете этот код, поэтому мы понятия не имеем, что это делает.
Знаете ли вы о различных типах целых чисел в C ? Вы можете использовать:
обычно длина int 4 байта может составлять 4 или 8 байт, обычно 8 байт для значений до 18 миллиардов миллиардов 2 ^ 64.
Вы не можете сделать в указателе ничего такого, чего не могли бы сделать за долгое время.
Но может случиться так, что класс, который вы используете, на самом деле выполняет длинную математику. Если это так, нам нужно больше знать об этом классе, чтобы помочь вам.