absolue anfänger frage
-
wie wärs mal mit dem source code !!!
-
er will dir sagen dass links von /= ein ausdruck stehen muss dem mann etwas zuweisen kann.
Kurt
-
also ich soll für mein erstes programm in informatik ein kleines programm schreiben, dass x^exp berechnet. dabei soll man das ganze rekursiv gestalten, wie unten.
es macht aus x^8 = (x4)2 = ((x2)2)^2der cond-befehl prüft im ertsten teil die aussage. bei wahr führt er den tweiten und bei falsch den dritten teil aus
aber was hab ich jetzt falsch gemacht? meiner meinung nach funktioniert es

#include <iostream> #define cond(a,b,c) ((a) ? (b) : (c)) using namespace std; int quadrat (int a) { return (a*a); } int potenz (int x, int exp) { return cond( exp==1, x, cond(exp%2 ==0, quadrat(potenz(x,exp/2)), cond(exp%2 =/=0, potenz(x,1)*potenz(x,exp-1),0))); } int main () { cout <<potenz(2,4) << endl; system("pause"); }
-
Der Operator für "ungleich" heißt nicht =/=, sondern !=.
-
boah danke

jetzt gehts

-
#define cond(a,b,c) ((a) ? (b) : (c))aua, das ist ja übel.
ein ordentlich formatiertes ?: oder einfach ein if statement sind allemal verständlicher (und korrekt).
-
if kommt erst später

und mit dem ?: sieht es ein bissel abstrakter aus, als mit cond[ition](aussage,true,false)
-
Ihr lernt echt solche Angelegenheiten wie ?: vor den Standard-Konstrukten (if oder while)?

-
CStoll schrieb:
Ihr lernt echt solche Angelegenheiten wie ?: vor den Standard-Konstrukten (if oder while)?

Wundert mich auch
-
CStoll schrieb:
Ihr lernt echt solche Angelegenheiten wie ?: vor den Standard-Konstrukten (if oder while)?

wenn man vorher lisp oder prolog gelernt hat und das gewohnt ist, setzt man es natürlich so um.
üblicher in c++ wäre vielleicht sowas wie
int potenz (int x, int exp) { if(exp==1) return x; else if(exp%2==0) return quadrat(potenz(x,exp/2)); else return x*potenz(x,exp-1); }aber das zeugs mit cond ist auch ganz fein zu lesen.
nun haben c++-leute leider angst vor makros. ich ersetze mal
#define cond(a,b,c) ((a) ? (b) : (c))durch
int cond(bool a,int b,int c){ if(a) return b; else return c; }und staune, was da passiert.