Wo liegt hier der Fehler??? In den Funktionsaufrufen



  • dann zeig doch mal deine deklarationen und funktionen



  • Snake schrieb:

    Was für einen Topic würdest du den hierfür wählen? 😕

    zB
    Makro und Funktionsaufruf - Syntaxfehler

    denk mal nach:
    END_WERT wird durch 100; ersetzt und jetzt schau dir an was dann
    berechneSumme(START_WERT, END_WERT);
    für den Compiler darstellt.



  • Ihr drückt das sehr kompliziert aus, dass er die Semikolons hinter den #defines weglassen soll 😉



  • Bashar schrieb:

    Ihr drückt das sehr kompliziert aus, dass er die Semikolons hinter den #defines weglassen soll 😉

    Shitt 🙄 , ich wusst doch das es ein einfaches Problem war.

    Tja dsa war das Ergebnis wenn man zu spät abends noch was programmiert, man sieht den Wald vor lauter Bäumen nicht mehr. 😃



  • Also,

    ich hab es jetzt immerhin so, dass ich weiterarbeiten kann.

    1. Waren die ; bei define falsch 🙄
    2. Musste ich START_WERT und GRENZWERT umbennen da ich sonst eine Makroneudefinition bekommen hätte

    So nun sind die Fehler wech und ich kann weiter machen.

    Vielen Dank für die Denkanstöße 😉



  • Ok ich hät da nochmal was wo ich nen Anstoß bräuchte.

    #define TERM 1/n
    
    double berechneGliedwert (int n)
    {
    	double ergebnis;
    	ergebnis = TERM;
    
    	return ergebnis;
    }
    

    Mein Problem ist, dass wenn ich n in der Funktion an TERM übergebe nichts gerechnet wird.
    Wäre n=2 müsste ja 0.5 in ergebnis gespeichert werden, was aber nicht der Fall ist.

    Schreibe ich aber in der #define TERM 1*n, funktioniert die rechnerei ohne Probleme.
    Wäre n=2 hier gegeben, kommt in ergebnis auch 2 raus.

    so und nu???



  • int/int ist int
    1/2 ist (theoretisch int(0.5)) 0

    du meinst sicher
    1.0/2

    aber achtung: das Makro TERM ist blöd, da es nur dann verwendbar ist, wenn es eine variable n gibt.

    wie wäre es mit
    #define Term(n) 1.0/(n)

    wobei man statt term noch einen besseren Namen finden sollte.



  • HI,

    Danke für die Hilfe so gehts besser. Sowas in der Art hab ich mir gedacht hab nur ".0" an der falschen Zahl gesetzt.



  • @shade
    Müsste nicht der Teiler eine Gleitkommazahl sein, um eine Gleitkommazahl rauszukriegen egal welchen Typ die Zahl hat durch die geteilt wird?



  • AJ schrieb:

    @shade
    Müsste nicht der Teiler eine Gleitkommazahl sein, um eine Gleitkommazahl rauszukriegen egal welchen Typ die Zahl hat durch die geteilt wird?

    ne, es wird immer der 'größere' Typ als Zieltyp genommen.



  • Hmmm komisch. Ich hab irgendwo mal gelesen, dass immer der Datentyp des Teilers genommen wird. Vielleicht wars auch in einer anderen Programmiersprache 😕

    Aber für C(++) merk ich mir das mal, dass immer der größere Typ verwendet wird. (Man lernt nie aus :))


Anmelden zum Antworten