C++ |
johnny21 unregistriert
|
|
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
|
|
03.11.2013 22:45 |
|
|
johnny21 unregistriert
|
|
Da müsste ich doch irgendwie mit dem Modulo Operator arbeiten oder ?
|
|
04.11.2013 08:36 |
|
|
Johnny21 unregistriert
|
|
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.
|
|
05.11.2013 08:03 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
Hallo,
3 Kleinigkeiten:
- b und b1 spielen für die Bearbeitung der Aufgabe keine Rolle. Die Ergebnisse sind dann auch immer nur Ganzzahlwerte, welche dem abgerundeten Wert des Bruchs entsprechen.
- schau dir mal die Berechnung von N1 an. Die stimmt noch nicht.
- D1 = (D*1) könnte man kürzer als D1 = D darstellen.
Gruß,
Karlito
|
|
05.11.2013 09:49 |
|
|
Johnny21 unregistriert
|
|
ICH verstehe nicht so ganz .
Kannst du mir ein wenig genauer erklären was ich an meinem code ändern soll?
|
|
05.11.2013 10:16 |
|
|
Johnny21 unregistriert
|
|
Ich glaube ich habe den Fehler :
N1 = N*D;
Würde jetzt der Code stimmen ?
|
|
05.11.2013 10:25 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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
|
|
05.11.2013 10:31 |
|
|
Johnny21 unregistriert
|
|
Tut mir leid wenn die Frage blöd wirkt .
Aber kannst du mir erklären was ich da genau an meinem Programm ändern soll?
|
|
05.11.2013 10:47 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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
|
|
05.11.2013 13:57 |
|
|
Johnny21 unregistriert
|
|
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?
|
|
05.11.2013 14:05 |
|
|
|
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.
__________________ Syntax Highlighting fürs Board (Link)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von eulerscheZahl: 05.11.2013 14:27.
|
|
05.11.2013 14:15 |
|
|
Karlito
Kaiser
Dabei seit: 11.04.2011
Beiträge: 1.461
|
|
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
|
|
05.11.2013 14:15 |
|
|
Johnny21 unregistriert
|
|
Echter Bruch müsste doch ein Bruch mit Komma Zahl sein oder ?
Unechter Bruch 2/1 zum Beispiel ?
|
|
05.11.2013 15:01 |
|
|
|