C++ Methode Implementieren



  • Hi,

    vielleicht könnt ihr mir helfen.

    Verstehe nicht wie man diese Aufgabe lösen soll.
    ------------------------------------------------
    Aufgabe:

    Impletieren Sie alle weiteren Methoden der Klasse. Beachten Sie dabei folgende Hinweise:

    isInteger:Methode prüft, ob der Bruch ganzzahlig ist (Rückgabe true) oder nicht (Rückgabe false). Man kann diese Methode mit Hilfe Operators % (Modulo) implementieren.
    ----------------------------------------------

    Habe gedacht das man in Zeile 70 niemals den Attributwert anstelle des Parameterwertes überprüfen darf.
    Aber anders bekomme ich eine Fehlermeldung

    //CFraction.h
    
    #ifndef CFraction_H
    #define CFraction_H
    
    class CFraction
    {
    public:
    	CFraction();
    	void setNumerator(int nN);
    	bool setDenominator(int nD);
    	bool isInteger();
    	bool isProper();
    	void addInteger(int nValue);
    	float transform2float();
    	void print();
    
    private:
    	int m_nN;
    	int m_nD;
    
    };
    
    #endif
    
    ---------------------------------------------------------------------------
    
    //CFraction.cpp
    
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    #include"CFraction.h"
    
    //Implementierung von CFraktion
    
    void CFraction::setNumerator(int nN)
    {	
    	m_nN=nN;
    }
    
    bool CFraction::setDenominator(int nD )
    {	
    
    if(nD > 0. && nD <0.)
    {
    m_nD=nD;
    return true;
    }
    else
    return false;
    
    }
    
    bool CFraction::isInteger()
    {
    
    if((m_nN%m_nD)!=0)  //Niemals den Attributwert anstelle des Parameterwertes überprüfen
    {
    return false;
    }
    else
    return true;
    
    }
    
    // Implementierung des Konstruktors im cpp-File
    CFraction::CFraction()
    {
    
    m_nN=0.;
    m_nD=1.;	
    
    }
    
    void CFraction::print()
    {
    
    cout <<"Zaehler:"<<	m_nN<<endl;
    cout<<"Nenner:"<<m_nD<<endl;
    
    }
    
    -------------------------------------------------------------------
    
    //main.cpp
    
    #include"CFraction.h"
    #include <iostream>
    #include <iomanip>
    
    using namespace std;
    
    int main ()
    {
    
    int nValue=-1;
    
    // Deklaration von Objekten der Klasse CFraction
    
    CFraction f;
    f.print();
    f.setNumerator(2);
    f.print();
    f.setNumerator(nValue);
    f.print();
    
    system ("PAUSE");}
    


  • ist es gewollt dass du in der main keinen Nenner festlegst?

    Und welche Fehlermeldung kriegst du?



  • ...



  • Swordfish: Wieso kein const -qualifier bei is_integer ? Wieso keine Getter? Wieso kein zweiter Konstruktor? 🤡

    P.S.: Außerdem ist das Design komisch. Wieso beim Setter eine Überprüfung? Der Programmierer wird, wenn er einen so grundlegenden Typen verwendet, schon schlau genug sein, keine 0 als Nenner zu setzen.

    Edit^x: Ach. War nur eine Korrektur. Dann geht das an den ... TE.



  • ...


Anmelden zum Antworten