Verwendung von square() in einer while schleife



  • Hallo ,

    ich stehe gerade in meinem Buch "Einführung in die Programmierung von C++"
    an einer stelle die sich mir vom Verständnis her einfach nicht wirklich erschließt. Wie immer ist es sicher nur eine Kleinigkeit aber ich komme einfach nicht darauf 😕

    Es wird eine while-Anweisung erklärt in der die Quadratzahlen tabellarisch ausgegeben werden mithilfe von square() allerdings spuckt mir der compiler einen Fehler aus wenn ich es wie im beispiel mache.

    #include"std_lib_facilities.h"
    
    int main(){
    
    	int i = 0;
    
    	while (i < 100){
    		cout << i << '\t' << square(i) << '\n';
    		++i;
    	}
    
    }
    

    laut google müsste ich

    int square(int i)
    

    noch irgendwo hinzufügen aber da bekomme ich ebenso fehlermeldungen
    vielleicht könnte mir jemand erklären warum das so ist denn die folgenden Aufgaben bauen genau mit der gleichen Zusammenstellung weiter auf einander auf und ich komme einfach nicht drauf was fehlt oder warum .



  • Da du nicht schreibst was für einen Fehler kann man nur spekulieren. Vermutlich weil die square Funktion nicht definiert ist. Schaue dir in deinem Buch an wie man Funktionen definiert (ich denke das ist sowieso gerade Thema des Kapitels).



  • In der mir vorliegenden Ausgabe steht dann drunter:

    "The notation square(i) simply means the square of i. We'll later explain how it gets to mean that (§ 4.5)."



  • Du rufst die Funktion "square" auf ohne sie definiert zu haben. Da du Funktionen vermutlich noch nicht verstehst macht es jetzt auch nicht wirklich Sinn da großartig was zu erklären. Wenn der Quellcode laufen soll, kannst du in etwa so etwas vor "int main()" implementieren:

    int square(int i) { return i*i; }
    

    ~Edit durch Arcoth: Flüchtigkeitsfehler (?) korrigiert.~



  • Ich bedanke mich recht herzlich für die Tipps ! 🙂
    Ein paar seiten weiter steht zwar eben diese Beschreibung aber wie immer hat man einfach ein Brett vorm Kopf und findet selbst die einfachsten Sachen nicht .
    Deswegen nochmal danke !!

    /Gelöst


Log in to reply