C++ Fehlermeldung wegen falsch deklarierter Variable (binärrechner)

mausweazle

Lt. Commander
Registriert
Mai 2008
Beiträge
1.633
Hallihallo liebe Community,

ich hab nen kleines Problem bei nem Programm in C++. Ich soll nen Binärrechner schreiben, dh. ich soll nen Dezimalzahl in ne Binärzahl umwandlen mithilfe der rekursiven Funktionen potenz und binaerrechner. Des hab ich soweit auch, wie ich finde ganz gut hinbekommen, bekomme aber ne Fehlermeldung wegen ner angeblich nicht deklarierten Variable. Ich bin noch n C++-Anfänger also bitte zerreißt mich nicht gleich.


Hier mal nen Link

Der Fehler lautet: error: decwert was not declared in this scope (in line 30 bzw line 36)


Mausweazle
 
boa nee du hast recht.....-.- ich hoff es klappt jetzt.
Ergänzung ()

Es hat jetzt endlich funktioniert, aber das Programm tut nich was es soll....-.- muss ich mich wohl noch ma dransetzen
 
Willst du das absichtlich alles "per Hand" machen, oder warum verwendest du nicht z. B. pow()?

Ansonsten habe ich mir den Code nicht angeschaut, denke du willst ja damit üben ;)

Gruß,

badday
 
Wir dürfen nicht pow() nutzen, weil wir ja ne rekursive Potenzfunktion schreiben müssen. Ich komm bei dem Programm nimmer weiter.....
hier mal der Link vom verbesserten Teil
 
Hi,

nochmal was zu deiner Funktion "potenz".
Du solltest auch noch abfragen, ob der Exponent == 0 ist. Dann musst du nämlich das Ergebnis 1 zurückgeben, ansonsten wird deine Funktion sich unendlich weiter Aufrufen, was wohl irgendwann zu einem Speicherüberlauf oder ähnlichem führen würde-->Programm verabschiedet sich. Außerdem sagt das auch die Mathematik:) Viel Spaß noch beim weiteren Programmieren:)
 
Zuletzt bearbeitet:
Kleiner Tip beim Konkatenieren von std::string ... anstatt

zifKette = zifKette + "0";


lieber

zifKette += "0";

Ist ein bißchen effizienter, da du so einen überflüssigen 'temporary' vermeidest.


Deine binaerRechner()-Funktion verwirrt mich übrigens etwas. Ich sehe, daß sie keinerlei globale Variablen verwendet (das ist auch GUT so! :)) und auch keine Parameter per Referenz oder Pointer annimmt. Der einzige Weg, auf dem sie etwas ausrichten kann, ist also per Rückgabewert. Auch das ist prinzipiell GUT :).
Mich wunder nur, daß deine Funktion nicht in jedem Fall etwas zurückgibt und daß du sie an 2 Stellen rekursiv aufrufst, ohne ihren Rückgabewert zu verwenden. Was soll das bewirken?
 
ja du hast recht....
des muss ich nochmal überarbeiten.
btw: pointer und der ganze andere kram dürfen wir nicht benutzen, denn des ham wir noch nicht in der vorlesung gehabt....
 
mausweazle schrieb:
btw: pointer und der ganze andere kram dürfen wir nicht benutzen, denn des ham wir noch nicht in der vorlesung gehabt....


Ist auch ok so. Pointer und Referenzen sollten in deinem Beispiel eh nicht nötig sein. Generell ist es ohnehin besser, wenn eine Funktion lediglich Eingabeparameter bekommt und dann ihr Ergebnis als Rückgabewert liefert.
Pointer und Referenzen sollte man nur dann verwenden, wenn es wirklich notwendig ist.
 
badday schrieb:
Das würde ich so nicht unbedingt sagen. Was spricht dagegen, Referenzen zu benutzen?

Ich sage ja nicht, daß man sie nicht verwenden sollte, eben nur dann, wenn es auch wirklich nötig ist. Beispiel:

Code:
// nicht so gut
void checkIfNumberIsEven( int checkIfNumberIsEven, bool& numberIsEven )
{
    if ( number % 2 == 0 )
    {
        numberIsEven = true;
    }
    else
    {
        numberIsEven = false;
    }
}

// besser
bool checkIfNumberIsEven( int number )
{
    if ( number % 2 == 0 )
    {
        return true;
    }
    
    return false;
}

Ich hab's lieber wenn eine Funktion keine Out-Variablen hat, sondern Information per Rückgabewert an den Aufrufer vermittelt. Natürlich gibt's Ausnahmen (wenn return-Wert eine Instanz einer Klasse ist, die teuer zu kopieren ist und der Compiler das auch aus irgend welchen Gründen nicht wegoptimieren kann).
 
Zuletzt bearbeitet:
Zurück
Oben