Bitte um HILFE!!
-
Angabe:
Schreiben Sie die Funktionen int mult(int m, int n) und int power(int m, unsigned int n), die das Produkt m*n bzw. die Exponentialfunktion mn der Zahlen m und n berechnen. Verwenden Sie dazu weder Schleifen, noch den Operator * (Multiplikation). Auch das Verwenden irgendwelcher externer Routinen (z.B. Mathematikbibliotheken) ist nicht erlaubt! Beachten Sie, dass int-Werte auch negativ oder gleich 0 sein können. Hinweis: m*n = m+m*(n-1) für n>0 bzw. mn=m*mn-1mein ansatz:
#include<iostream>
using namespace std;int mult(int, int);
int power(int, unsigned int);
int main()
{
int a,b;
cout<<"Geben Sie 2 Zahlen ein: ";
cin>>a;
cin>>b;
cout<<a<<" x "<<b<< "= " << mult(a,b)<<"\n";
cout<<a<<" ^ "<<b<< "= " << power(a,b)<<"\n";
}int mult(int num, int times)
{
if(times==0) return 0;
return num + mult(num,times-1);
}
int power(int num1, int times1)
{
if(times==0) return 0;
return num1 * power^(num,times-1);
}Das mit dem multiplizieren hat ja noch gefunkt ab mit dem hoch steh ich jetzt an!! Hab mir auch schon die links die dem sorgenkind gepostet sind angeschaut & auch brauchen können, aber jetzt bin ich mit meinem latein (c++) am ende!!
Hoffe ihr könnt mir meine fehler sagen & weiterhelfen!!!
Vielen Dank im voraus!!
-
ich hab mir deine Aufgabe zwar nicht durchgelesen aber das ^ in der power-Funktion muss weg
EDIT: ah Ja, deine Parameter der Power-Funktion werden nicht verwendet...times != times1
-
int mult(int num, int times)
{
if(times==0) return 0;
return num + mult(num,times-1);
}
int power(int num1, int times1)
{
if(times==0) return 0;
return mult(num1, power(num,times-1));
}
-
Gast221212 schrieb:
int mult(int num, int times)
{
if(times==0) return 0;
return num + mult(num,times-1);
}
int power(int num1, int times1)
{
if(times==0) return 0;
return mult(num1, power(num,times-1));
}Genau, und natürlich noch num durch num1, times durch times1 ersetzen oder vice versa
-
#include<iostream>
using namespace std;int mult(int, int);
int power(int, int);
int main()
{
int a,b;
cout<<"Geben Sie 2 Zahlen ein: ";
cin>>a;
cin>>b;
cout<<a<<" x "<<b<< "= " << mult(a,b)<<"\n";
cout<<a<<" ^ "<<b<< "= " << power(a,b)<<"\n";
}int mult(int num, int times)
{
if(times==0) return 0;
return num + mult(num,times-1);
}
int power(int num1, int times1)
{
if(times1==0) return 0;
return mult(num1, power(num1,times1-1));
}Zuerst einmal dankeschön!! Das programm kann zwar kompiliert werden jedoch kommt als ergebnis der potenz: 5^2=0
??
-
Die Abbruchbedingung bei power passt nicht. So kommt am Ende noch ein Faktor 0 dazu, also ist alles 0.
-
und wie schaut das dann korrekt aus - steh komplett an!!
DANKE!
-
völligahnungslos schrieb:
und wie schaut das dann korrekt aus - steh komplett an!!
DANKE!bei power einfach return 1 wenn timmes == 0 ist
-
völligahnungslos schrieb:
und wie schaut das dann korrekt aus - steh komplett an!!
Die Aufgabe begint mit "Schreiben Sie die Funktionen...", nicht mit "Lassen Sie die Funktionen schreiben...".
Wie wäre es, wenn du selbst versuchst zu verstehen, wie das funktioniert? Dann kannst du den Fehler recht einfach selbst beheben. Die Hauptarbeit haben ja sowieso schon Andere für dich übernommen.