Försöker skriva en egen pow() function. I uppgiften får man inte använda den inbyggda.
Kod:
#include <iostream>
using std::cout;
using std::endl;
int sum, base, expo;
void power(int base, int expo) {
for (int x = 0; x <= expo; x++) {
sum = base;
sum = base * base;
}
cout << sum << endl;
}
int main()
{
power(2, 3);
}
Den printar ut 4 när den borde printa ut 8, vad är fel?
Försöker skriva en egen pow() function. I uppgiften får man inte använda den inbyggda.
Kod:
#include <iostream>
using std::cout;
using std::endl;
int sum, base, expo;
void power(int base, int expo) {
for (int x = 0; x <= expo; x++) {
sum = base;
sum = base * base;
}
cout << sum << endl;
}
int main()
{
power(2, 3);
}
Den printar ut 4 när den borde printa ut 8, vad är fel?
sum = base * base ger alltid 2 * 2 oavsett hur många gånger du loopar och 2 * 2 är lika med 4
__________________
Senast redigerad av kimdah2002 2021-12-01 kl. 20:54.
#include <iostream>
using std::cout;
using std::endl;
int sum=1, base, expo;
void power(int base, int expo) {
for (int x = 0; x < expo; x++) {
sum *= base;
}
cout << sum << endl;
}
int main()
{
power(2, 3);
}
Rent allmänt kan man ju också reflektera över att du har gjort en funktion som kanske borde heta printPow eller printPower, till skillnad från pow som returnerar resultatet.
#include <iostream>
using std::cout;
using std::endl;
int sum=1, base, expo;
void power(int base, int expo) {
for (int x = 0; x < expo; x++) {
sum *= base;
}
cout << sum << endl;
}
int main()
{
power(2, 3);
}
och säg om det fungerar bättre.
Ok, det funkar.
Felet var alltså att efter varje iteration initierade jag samma värde i variabeln sum, i din lösning använder du:
Kod:
sum *= base;
Så ökar värdet efter varje loop. sum = sum * base.
Ja, det kan uttryckas på olika sätt. Viktigt är att initiera sum (inte det bäst valda namnet, men ändå) till ett och inte base, eftersom pow(2,0) och till och med pow(0,0) båda är lika med ett.
#include <iostream>
using std::cout;
using std::endl;
int sum=1, base, expo;
void power(int base, int expo) {
for (int x = 0; x < expo; x++) {
sum *= base;
}
cout << sum << endl;
}
int main()
{
power(2, 3);
}
och säg om det fungerar bättre.
Efter fler tester märker jag att den inte fungerar. Jag vill ha en metod som fungerar exakt som denna:
Kod:
int power(int base, int expo) {
sum = pow(base, expo);
return sum;
}
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!
Stöd Flashback
Swish: 123 536 99 96Bankgiro: 211-4106
Stöd Flashback
Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!