Anzeige

 Bruch in Gleitkommazahl umwandeln [per class]


#1
Hallo Community ich stehe vor ein großes Problem leider kriege ich es nicht hin ein Bruch in Dezimal umzuwandeln es kommt nur die erste Zahl als Ergebnis aber die Zahlen nach dem Punkt kommen nicht. Ich hoffe ihr versteht mein Problem danke im vorraus
C++:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

class Bruch
{
private:
    int z;
    int n;
public:
    void eingeben();
    void ausgeben();
    void erweitern(int);
    double doubleaus();
    //Konstruktor
    Bruch(int,int);
    //Destruktor
    ~Bruch();
};
  //Konstruktor
   Bruch:: Bruch(int zz=0,int nn=0){
       z=zz;
       n=nn;
   }
    //Destruktor
   Bruch:: ~Bruch(){}
void Bruch::eingeben()
    {
        cout<<"Geben sie Zaehler und Nenner ein"<<endl;
        cout<<"Zahler"<<endl;
        cin>>z;
        cout<<"Nenner"<<endl;
        cin>>n;
    }
void Bruch::ausgeben()
    {
        cout<<"Zaehler ="<<z<< "/"<<"Nenner="<<n<<endl;
    }
void Bruch::erweitern(int w)
    {
        cout<<"Geben sie den Faktor an"<<endl;
        cin>>w;
        cout<<w*z<< "/" <<w*n<<endl;
    }  
double Bruch::doubleaus()
    {
     double z;
     double n;
     double dezi=z/n;
     return z;
    }

int main()
    {
        Bruch test(6,7);  
        test.eingeben();
        test.ausgeben();
        test.erweitern(3);
        test.doubleaus();
   
        system ("pause");
    }
 

Anhänge

sheel

I love Asm
#2
Hi

geht es um die Methode doubleaus (deren Ergebnis im Code nirgends ausgegeben wird)?

Was hier beachtet werden muss, dass eine Division zwischen zwei int (z und n) in C und C++ wieder ein int-Wert ist - so ist die Sprache einfach. Das zuweisen zum double dezi hilft nur insofern, dass das Ergebnis zuerst als int ohne Kommastellen ausgerechnet wird, und dann erst in ein double umgewandelt wird (die Kommastellen sind zu dem Zeitpunkt schon weg).

Um gleich ein double-Ergebnis aus einer doube-Division zu bekommen muss (mindestens) eine der zwei verrechneten Zahlen auch ein double sein.
zB. zuerst z explizit umwandeln
C++:
double dezi = (double)z / n;
 
#3
Danke vielmals alles klappt nun wie es soll
C++:
     double zaehler=z;
     double nenner=n;
         double dezi= (double)z/n;
         cout<<"Summe in Dezimal ="<<dezi<<endl;
         return z;
 
Anzeige

Neue Beiträge

Anzeige