Ich arbeite derzeit an einer Aufgabe, wo wir einen Assembler mit C++ machen. Ich bin so weit gegangen, den Code unterscheiden zu lassen, wenn eine Zahl eingegeben wird, und versuche, das Programm zu veranlassen, die relevanten Bits in einem 16-Bit-Array zu der erforderlichen Binärzahl zu ändern.C++ Übergeben einer Int, Fehler zu sagen, es ist ein Doppel
Das Problem ist, dass, nachdem die Leistung berechnet wird, der Rest der Eingangsnummer und die erste Macht, die es übersteigt, einem int zugeordnet ist, aber es zurück in dec_to_bin() übergeben ich bekomme den folgenden Fehler.
assembler.cpp: In function ‘void dec_to_bin(int, int*)’: assembler.cpp:135:32: error: invalid conversion from ‘double (*)(double, double)throw()’ to ‘int’ [-fpermissive] dec_to_bin(remainder, pointer);
//*pointer points to an array[16]
void dec_to_bin(int num, int *pointer)
{
//Base cases
if(num == 2)
{
pointer[14] = 1;
return;
}
else if(num == 1)
{
pointer[15] = 1;
return;
}
else
{
int power = 0;
//power function outlined below. The inbuilt pow(a, b) returns a
//double and gave the same problem, so I tried this instead.
while(PowerFunc(2, power) < num)
{
power++;
}
//Problem arises here. remainder is assigned as an int
//Using typeinfo shows it as an int, yet passing it a few lines
//down gives the quoted error.
int remainder = PowerFunc(2, power)-num;
pointer[16-power] = 1;
}
if(remainder == 0)
{
return;
}
else
{
//Line that throws the error. Saying remainder is a double.
dec_to_bin(remainder, pointer);
}
}
//Power function to replace pow(a, b). Not ideal but it works.
int PowerFunc(int number, int powernum)
{
if(powernum == 0)
{
return 1;
}
else if(powernum == 1)
{
return number;
}
else
{
return number * PowerFunc(number, powernum-1);
}
}
Das hat mich ehrlich verblüfft. Zuerst dachte ich, ich würde pow (a, b) benutzen und es einem int zuweisen, würde aber nur den Dezimalteil spleißen, aber selbst wenn ich meine eigene Potenzfunktion mache, sagt sie mir immer noch, dass mein Int ein Double ist.
betrachten die Befugnisse schrittweise Berechnung, aktualisieren Sie einfach es für jede Iteration. –