# c++ Ergebnis als Bruch darstellen



## JeanClaudeVanDamme (24. Juni 2005)

Hallo 
kurze Frage kurze Antwort,wie kann ich das ergebnis als Bruch ausgeben?


----------



## Tobias K. (24. Juni 2005)

moin


Wenn dann nur mit nem / als Bruchstrich. Oder du musst das über mehrere Zeilen darstellen.


mfg
umbrasaxum


----------



## JeanClaudeVanDamme (24. Juni 2005)

ja genau,das meinte ich
zum beispiel 5 geteilt durch 10 = 1/2


----------



## Tobias K. (24. Juni 2005)

moin


Und wo ist dann das Problem?
Weisst du nciht wie man ausgibt?
Oder weisst du nciht wie du in einen Bruch umwandelst?


mfg
umbrasaxum


----------



## vop (24. Juni 2005)

Vermutlich möchtests Du den Bruch kürzen

sonst könntest Du ja einfach 5/10 schreiben.

Google mal nach ggT (größter gemeinsamer Teiler)

Der ggt von 5 und 10 ist nämlich 5
Teilst du dann Zähler und Nenner durch den ggt erhälst Du 1 und 2 => 1 / 2

vop


----------



## Tobias K. (24. Juni 2005)

moin


@vop
Ich glaube nciht das das sein Problem ist, sondern wie man von 0,5 auf 1/2 kommt.

Aber erstmal abwarten bis er sich wieder meldet.


mfg
umbrasaxum


----------



## vop (24. Juni 2005)

Es wäre nett wenn er uns helfen würde, zu erfahren, was eigentlich sein Problem ist.

vop


----------



## JeanClaudeVanDamme (24. Juni 2005)

hallo

sorry,dass ich das Problem unverständlich beschrieben habe.

Tobias K. 
genau das würde ich gerne wissen.ich habe keie Ahnung welche variable ich nehmen soll damit das Resultat einer Rechnung als Bruch und nicht als Komma- oder ganze Zahl rauskommt.


----------



## deepthroat (24. Juni 2005)

In C++ gibt es standardmäßig keine rationalen Zahlen(typen) sondern nur Typen für Ganzzahlen und Gleitkommazahlen.

Wenn du mit Brüchen arbeiten möchtest mußt du das selber machen - soll heißen du mußt dir erstmal einen Typ "Bruch" definieren. Guckst du hier.


----------



## Tobias K. (24. Juni 2005)

moin


Na ne Klasse muss es auch nciht gleich sein, wenn es Hauptsächlich um ne veränbderte Darstellunge geht.

Nehmen wir mal an du hast als Ergebnis 0,33333333 und willst das in einen Bruch umwandeln, dann musst du 1 durch 0,33333 teilen Ergebnis 3,030303030, also Bruch = 1/3.


```
float ergebnis = 0.333333;
int nenner = 1 / ergebnis;

string bruch;
bruch += 1;
bruch += ergebnis;

cout<< bruch;
```
Dadurch das nenner vom Typ int ist schneiden wir gleich das unnütze Zeugs hinterm Komma ab.

Dieser Code ist natürlich nur ein Ansatz, wenn die Zahl größer als 1 ist, musst du erst die ganzen abrechnen und in den Bruch packen. Und ungenau ist mein Beispiel auch sehr, aber jetzt hast du erstmal was wo du mit anfangen kannst.


mfg
umbrasaxum


----------



## JeanClaudeVanDamme (24. Juni 2005)

Tobias K.

ich habe mal den code mit borland c builder kompiliert,bei mir kommt da nur ein smiley

deepthroat
danke für den link


----------



## Tobias K. (24. Juni 2005)

moin


Ja war auch nur hingeklatscht:

```
int main()
{
	int i = 1;
	float ergebnis = 0.333333;
	int nenner = 1 / ergebnis;

	char temp[10];

	std::string bruch;
	itoa(i, temp, 10);
	bruch += temp;
	bruch +="/";
	itoa(nenner, temp, 10);
	bruch += temp;

	std::cout<< bruch.c_str();

	return 0;
}
```


mfg
umbrasaxum


----------



## JeanClaudeVanDamme (25. Juni 2005)

ok,vielen Dank für die Hilfe!


----------

