Skip to content

Instantly share code, notes, and snippets.

@Zedonax
Created November 19, 2012 20:49
Show Gist options
  • Select an option

  • Save Zedonax/4113781 to your computer and use it in GitHub Desktop.

Select an option

Save Zedonax/4113781 to your computer and use it in GitHub Desktop.
bruch
#include <iostream>
#include <iomanip>
using namespace std;
class Bruch
{
private:
long long zaehler;
long long nenner;
int euclied(long long a, long long b)
{
while(b != 0)
{
int h = a % b;
a = b;
b = h;
}
return a;
}
void kuerzen()
{
long long x;
do
{
x = euclied(zaehler, nenner);
zaehler /= x;
nenner /= x;
}
while(x != 1);
}
public:
Bruch(long long zaehler = 0, long long nenner = 1)
{
setBruch(zaehler, nenner);
}
Bruch(double zahl)
{
setBruch(zahl);
}
void setBruch(double zahl, int genauigkeit)
{
long long faktor = pow(10.0, genauigkeit);
setZaehler((long long)(zahl*faktor+5/faktor));
setNenner(faktor);
kuerzen();
}
void setBruch(long long zaehler = 0, long long nenner = 1)
{
this->zaehler = zaehler;
this->nenner = nenner;
kuerzen();
}
void setZaehler(long long zaehler)
{
this->zaehler = zaehler;
}
void setNenner(long long nenner)
{
if(!nenner)
nenner = 1;
this->nenner = nenner;
}
double getDouble()
{
return (double)zaehler/(double)nenner;
}
long long getZaehler()
{
return zaehler;
}
long long getNenner()
{
return nenner;
}
};
int main()
{
Bruch myBruch;
myBruch.setBruch(15.1321, 1);
cout << myBruch.getZaehler() << "/" << myBruch.getNenner() << " = " << fixed << setprecision(18) << myBruch.getDouble();
getchar();
getchar();
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment