Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- C++ (http://www.informatikerboard.de/board/thread.php?threadid=1685)


Geschrieben von johnny21 am 03.11.2013 um 22:45:

  C++

Meine Frage:
Hallo ich habe gerade probleme bei einer Aufgabe:

N sei der Zähler und D der Nenner eines Bruchs b = N/D
, g sei eine ganze Zahl. Ergänzen Sie den
unten angegebenen C++-Code so, dass der Zähler N1 und der Nenner D1 des Bruchs b1 = b + g
berechnet werden.
int N=5, D=7, g=2;
int N1, D1;

Hat jemand tipps für mich?

Meine Ideen:
keine



Geschrieben von eulerscheZahl am 04.11.2013 um 05:39:

 

[latex]b=\frac{N}{D}[/latex]
[latex]b_1=\frac{N}{D}+g = \frac{N+g\cdot D}{D}[/latex]
Was sind Zähler und Nenner von b1?



Geschrieben von johnny21 am 04.11.2013 um 08:36:

 

Da müsste ich doch irgendwie mit dem Modulo Operator arbeiten oder ?



Geschrieben von eulerscheZahl am 04.11.2013 um 16:40:

 

Du wirst nur nach Zähler und Nenner des Bruches gefragt, da brauchst du kein modulo.
Modulo brauchst du hier: 14:5 = 2 Rest 4



Geschrieben von Johnny21 am 05.11.2013 um 08:03:

 

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;

int main(){

	int b; int b1;

	int N = 5 , D= 7, g =2;

	b = N/D;

	int N1;

	int D1;


	N1 = (N*g);

	D1 = (D*1);

	b1 = b+g;







}
[/quote]

Würde der code so stimmen ?

Und hast du noch einen tipp für mich für diese Fragestellung?

Geben Sie ein Verfahren an, mit dem überprüft werden kann, ob es sich bei einem Bruch b = N/D um einen echten oder unechten Bruch handelt.

Habe da im moment keine Idee.



Geschrieben von Karlito am 05.11.2013 um 09:49:

 

Hallo,

3 Kleinigkeiten:


Gruß,

Karlito



Geschrieben von Johnny21 am 05.11.2013 um 10:16:

 

ICH verstehe nicht so ganz .

Kannst du mir ein wenig genauer erklären was ich an meinem code ändern soll?



Geschrieben von Johnny21 am 05.11.2013 um 10:25:

 

Ich glaube ich habe den Fehler :

N1 = N*D;

Würde jetzt der Code stimmen ?



Geschrieben von Karlito am 05.11.2013 um 10:31:

 

Nein! Schau dir noch einmal die Formel von euler an. Da steht klar, wie man den Nenner berechnet. Das muss man nur ins Programm übernehmen. Ich sehe da nirgendwo N*D!

VG,

Karlito



Geschrieben von Johnny21 am 05.11.2013 um 10:47:

 

Tut mir leid wenn die Frage blöd wirkt .

Aber kannst du mir erklären was ich da genau an meinem Programm ändern soll?



Geschrieben von Karlito am 05.11.2013 um 13:57:

 

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;

int main(){

	int N = 5 , D= 7, g =2;

	int N1;
	int D1;

	N1 = N+g*D;
	D1 = D;

	cout << N << "/" << D << " + " << g << " = " << N1 << "/"  << D1 << endl;
}


VG,

Karlito



Geschrieben von Johnny21 am 05.11.2013 um 14:05:

 

Ah danke .

Geben Sie ein Verfahren an, mit dem überprüft werden kann, ob es sich bei einem Bruch b = N/D um einen echten oder unechten Bruch handelt.

Hast du auch noch einen tipp für mich für diese Aufgabe?



Geschrieben von eulerscheZahl am 05.11.2013 um 14:15:

 

Noch ein Hinweis, da das so wohl nicht geplant war (für die Aufgabe nicht relevant, wird dir aber noch öfter unterkommen):
code:
1:
2:
3:
int b; int b1;
int N = 5 , D= 7, g =2;
b = N/D;

in der letzten Zeile wird erst N/D gerechnet - und zwar als int/int, das heißt der Teil nach dem Komma wird einfach abgeschnitten:
5/7 = 0 Rest 5, wobei der Rest ignoriert wird.
Außerdem solltest du b als float oder double definieren, weil du sonst nur Ganzzahlen damit speichern kannst.
Wenn du wirklich eine Kommazahl haben willst, gibt es 3 Möglichkeiten:
1.:
code:
1:
2:
double b = N;
b = b/D;

hier wird eine sogenannte implizite Typumwandlung durchgeführt: auf der rechten Seite ist ein int, links ein double, also wird das int einfach zum double umgewandelt. (Funktiert nur in diese Richtung, int b = 3.4 klappt nicht).
2.:
code:
1:
2:
double b;
b = (0.0+N) / D

es wird erst 0.0+N gerechnet, dabei wieder implizit in double umgewandelt, dann double/int, was auch ein double liefert.
3.: (die beste Variante)
code:
1:
2:
double b;
b = (double)N / D

(double) ist ein cast, hier wird direkt gesagt, wie umgewandelt werden soll. Bezieht sich nur auf das N, dann wieder double/int = double.


Zitat:
Geben Sie ein Verfahren an, mit dem überprüft werden kann, ob es sich bei einem Bruch b = N/D um einen echten oder unechten Bruch handelt.

edit: hier stand Unsinn, ich hatte den unechten Bruch mit einem Scheinbruch verwechselt.



Geschrieben von Karlito am 05.11.2013 um 14:15:

 

Ja. Erstmal klären was ein echter und was ein unechter Bruch ist. Welche Eigenschaft hat dann die Zahl b, die in der Aufgabe durch N und D repräsentiert wird. Wie müssen sich N und D verhalten und wie findet man das im Programm heraus.

VG,

Karlito



Geschrieben von Johnny21 am 05.11.2013 um 15:01:

 

Echter Bruch müsste doch ein Bruch mit Komma Zahl sein oder ?

Unechter Bruch 2/1 zum Beispiel ?


Forensoftware: Burning Board, entwickelt von WoltLab GmbH