verwendung von funktionsprototypen



  • hey, ich hab mal mit dem "in 21tagen c++" anfangen und im 5.kapitel gehts um die verwendung von funktionsprototypen.
    ich glaube aber das der autor einiges vergessen haben muss, anders kann ich es mir einfach nicht erklären...
    es ist sicher noch mit das einfachste, aber es kommen trotzdem 3 fehler, dessen lösung ich einfach nicht herbeizaubern kann.
    also wenn mir jemand helfen könnte, wäre ich sehr verbunden.danke
    die fehler:

    "areaYard wurde ein wert zugewiesen, der nie verwendet wird" <-wo bitteschön?
    "undefiniertes symbol 'yardLength'"
    "undefiniertes symbol 'yardWidth'"<- ist klar, nur das es im quelltext auch nich definiert wird.verstehe ich nich

    // Listing 5.1 - Zeigt die Verwendung von Funktionsprototypen
    
    #include <iostream.h>
    #include <conio.h>
    int Area(int length, int width); //funktionsprototyp
    
    int main()
    {
    	int lengthOfYard;
    	int widthOfYard;
    	int areaOfYard;
    
            cout << "\nWie breit ist Ihr Garten? ";
    	cin >> widthOfYard;
    	cout << "\nWie lang ist Ihr Garten? ";
    	cin >> lengthOfYard;
    
    	areaOfYard= Area(lengthOfYard, widthOfYard);
    
    	cout << "\nDie Flaeche Ihres Gartens betraegt ";
    	cout << " areaOfYard";
    	cout << " Quadratmeter\n\n";
    getch();
    return 0;
    }
    
    int Area(int length, int Width)
    {
    	return yardLength * yardWidth;
    }
    


  • Hast du das wirklich genau so aus dem Buch abgeschrieben?

    @1: Du füllst die Variable zwar mit einem Wert "arreaofYard=Area(...);", aber greifst anschließend nie wieder darauf zu. Wenn du den Wert der Variablen ausgeben willst, darfst du ihren Namen nicht in "" einschließen.

    @2/3: Die Parameter deiner Funktion heißen "length" und "width", aber dann versuchst du, mit den Variablen "yardlength" und "yardwidth" zu rechnen - und die gibt's nicht.



  • "areaYard wurde ein wert zugewiesen, der nie verwendet wird" <-wo bitteschön?

    areaOfYard= Area(lengthOfYard, widthOfYard); // hier
    

    "undefiniertes symbol 'yardLength'"
    "undefiniertes symbol 'yardWidth'" <- ist klar, nur das es im quelltext auch nich definiert wird.verstehe ich nich

    int Area(int length, int Width)
    {
    	return yardLength * yardWidth; // und was ist hier?
    }
    

    Ausserdem:

    #include <iostream.h>
    

    Ist veraltet, nimm besser.

    #include <iostream>
    using namespace std;
    

    Und ob man für die Funktion "Konsole am Ende nicht schliessen" ausgerechnet die völlig unportable conio.h nehmen muss stelle ich auch in Frage 😉



  • gut, da habe ich es schon mehrmals überprüft und trotzdem nich gesehen.
    ok, ohne "" gibt er es aus, alles klar.

    naja, hatte schon einiges abgeändert...
    so steht es im buch, was noch unlogischer ist...:

    25: int Area(int l, int w)
    26: {
    27: return yardLength * yardWidth;
    28: }
    

    habs jetzt aber so geändert, das alles funktioniert.danke

    noch eine frage: wie ist die verbindung zwischen widthOfYard und width?
    wie merkt der das, das er diese variable nehmen muss, obwohl die ja einen anderen namen hat?



  • ok, geht.
    was soll ich denn sonst, zum nicht schließen der konsole nehmen?
    hatte die

    getch();
    

    hier im forum gefunden und war froh das es funktioniert.



  • Das Programm nimmt die Variable, die es als Parameter übergeben bekommt - d.h. wenn du die Funktion mit "widthofYard" aufrufst, wird dessen Wert in width übernommen.

    @Konsole schließen: Schau mal in die Konsolen-FAQ, da stehen ein paar bessere Alternativen (u.a. cin.get()).



  • nile schrieb:

    noch eine frage: wie ist die verbindung zwischen widthOfYard und width?
    wie merkt der das, das er diese variable nehmen muss, obwohl die ja einen anderen namen hat?

    widthOfYard wird der aufrufenden Funktion als Argument übergeben, der Wert der Variablen
    widthOfYard wird dann dem 2. Parameter der Funktion Area zugewiesen, in diesem Fall
    eben width.

    was soll ich denn sonst, zum nicht schließen der konsole nehmen?

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html
    Aber ruf dein Programm doch einfach von der Eingabeauforderung aus, wie
    es sich für ein Konsolenprogramm gehört 😉

    lg icepacker

    edit: omg immer diese flinken Mods 👎



  • und diese blöden "in 21 tagen" bücher 😡 👎



  • ser1al schrieb:

    und diese blöden "in 21 tagen" bücher 😡 👎

    oder 14 Tage oder 24 Stunden oder oder.... 😡 👎



  • 21tage ist ok. schafft man eh nich in der zeit und irgendwie muss man sich ja grundkenntnisse aneignen. danke für eure schnellen antworten!



  • Die 21Tage Bücher sind nicht schlecht weil sie mit der Aussage falsch liegen, sondern weil sie inhaltlich falsch sind.
    Das C++ in 21Tage Buch ist Müll, es ist heute einfach nicht mehr aktuell (iostream.h zum beispiel, das läuft auf meinem compiler nicht mal mehr und den gibts schon nen paar jahre).



  • nile schrieb:

    21tage ist ok. schafft man eh nich in der zeit und irgendwie muss man sich ja grundkenntnisse aneignen. danke für eure schnellen antworten!

    grundkenntnisse sind ok, wenn sie denn nicht falsch wären...also hände weg von 21tagen!

    gibt wirklich bessere bücher!


Anmelden zum Antworten