C++ - Seite 2 |
| 25.03.2013, 18:18 | Auf diesen Beitrag antworten » | ||||||||||
| info | Ok auf zum letzten Teil der Aufgabe: 2) Es ist ein Programm zu erstellen, in welchem genau drei Zahlen in drei Variable (z.B. a,b,c) eingelesen werden. Diese drei Werte sollen so in drei neue Variable (z.B. x,y,z) umgespeichert werden, dass diese sortiert sind. Für die neuen Variablem muss also gelten: x<=y<=z . Danach sind diese drei Zahlen sortiert auszugeben. Dieses Programm ist damit ein Spezialfall der Aufgabe aus 1). Achten Sie in dem Programm auf ausreichend Kommentare einrücken bei den Abfragen gefällige Ausgabe unter Verwendung von Manipulatoren. Es ist ein Programm zu erstellen, in welchem genau drei Zahlen in drei Variable (z.B. a,b,c) eingelesen werden. Diese drei Werte sollen so in drei neue Variable (z.B. x,y,z) umgespeichert Kann man das nicht so machen: int a; int b; int c; int a = x; int b = y; int c = z ; Würde das umspeichern so gehen ? |
||||||||||
|
|
|||||||||||
| 25.03.2013, 20:09 | Auf diesen Beitrag antworten » | ||||||||||
| eulerscheZahl | Mein Compiler sagt: der Bezeichner "x" ist nicht definiert. Das ist auch nicht verwunderlich, es müsst schließlich heißen int x=a; Sortiert ist damit aber immer noch nichts. Wenn in der Variablen x der kleinste Wert stehen soll, geht das am einfachsten mit int x = min(a, min(b, c)); //davor #include <cmath> |
||||||||||
| 26.03.2013, 08:29 | Auf diesen Beitrag antworten » | ||||||||||
| info | OK dann mache ich das wohl so oder: int x = a; int y = b; int z = c; Kann ich nicht zum sortieren auch die if schleife benutzen oder while? |
||||||||||
| 26.03.2013, 08:58 | Auf diesen Beitrag antworten » | ||||||||||
| Karlito | Hallo, du kannst testen ob das richtig ist, indem du zuerst a, b und c einliest und nachdem du umgespeichert hast, x y und z ausgibst. Die Sortierung würde ich mit If-Abfragen realisieren. Es gibt keine if-schleifen! VG, Karlito |
||||||||||
| Anzeige | |||||||||||
|
|
|||||||||||
| 26.03.2013, 13:30 | Auf diesen Beitrag antworten » | ||||||||||
| Karlito | Falls Du keine Lust hast ist hier ein Programm, was die Aufgabe löst:
VG, Karlito |
||||||||||
| 28.03.2013, 21:30 | Auf diesen Beitrag antworten » | ||||||||||
| info | Ich versuche es lieber doch selbst zu entwicckeln . Könnte man so vorgehen ? #include <iostream> using namespace std; include<cmath> int main() { int a = x; int b = y; int c = z; cout << "Bitte Zahlen eingeben !" << endl; cin >> x; cout << "2 Zahl" << endl; cin >> y; cout << "3 Zahl" << endl; cin >> z; } KArlito was bewirkt den in deinem code das hier: int r = 0; Wofür definiert man das r ? Das verstehe ich überhaupt nicht. Kannst du mir das erklären ? Soll ich jetzt in meinem code auch z.B int i = 0; definieren? |
||||||||||
| 28.03.2013, 23:11 | Auf diesen Beitrag antworten » | ||||||||||
| info | Ich hab bisschen weiter gearbeitet und das stehen: #include <iostream> using namespace std; int main() { int a = x; int b = y; int c = z; cout << "Bitte Zahlen eingeben !" << endl; cin >> x; cout << "2 Zahl" << endl; cin >> y; cout << "3 Zahl" << endl; cin >> z; for(int i = 0; j < n-1; j++) { for(int i = 0; i < n-1; i++) { if(j < j+1){ j = j+1; j+1= x; j=y; } } Kann man das so machen? |
||||||||||
| 29.03.2013, 09:29 | Auf diesen Beitrag antworten » | ||||||||||
| eulerscheZahl |
Das musst du im Zusammenhang sehen, r wird danach wieder befüllt, wenn auch nur die letzten 3 Bits. Das drittletzte Bit gibt an, ob a<b, das vorletzte, ob a<c und das letzte ob b<c. Ich habe auch einen Moment gebraucht, um das gesamte Programm zu verstehen. |
||||||||||
| 29.03.2013, 15:17 | Auf diesen Beitrag antworten » | ||||||||||
| info | Hast du tipps wie ich das irgendwie jetzt in meinem programm einbauen kann , das ist so schwer drauf zu kommen . |
||||||||||
| 29.03.2013, 16:39 | Auf diesen Beitrag antworten » | ||||||||||
| eulerscheZahl | Mache es doch, wie in der Aufgabenstellung beschrieben: erst einmal a, b und c einlesen. Melde dich wieder, wenn du das Einlesen hast, dann schauen wir weiter. Die Variablen x, y und z will ich bis dahin nicht sehen, sonst gibt es am Ende wieder Fehlermeldungen. |
||||||||||
| 29.03.2013, 17:53 | Auf diesen Beitrag antworten » | ||||||||||
| info | Wieso ist das einlesen bei mir falsch. Das verstehe ich nicht . Was mache ich daran falsch? |
||||||||||
| 29.03.2013, 18:08 | Auf diesen Beitrag antworten » | ||||||||||
| eulerscheZahl | Was in meinem vorletzten Beitrag stand, waren die Fehlermeldungen des Compilers zu deinem Code:
Was sind x, y und z? Die hast du nirgendwo definiert, willst sie aber verwenden, das geht nicht.
Du sollst in a, b und c einlesen, nicht in x, y und z (siehe Aufgabenstellung) Das sortieren mit verschachtelten Schleifen kannst du bei einem Array machen, die Schleifenvariablen sind dann die Indizes der zu vergleichenden Elemente. Mit verschiedenen Variablen geht das nicht, da der Zugriff da nicht so einfach ist. Am einfachsten sind if-Abfragen wie: if(a<=b && b<=c) {x=a; y=b; z=c;} Aber solange das Einlesen nicht klappt, brauchen wir uns damit noch nicht zu befassen. |
||||||||||
| 31.03.2013, 15:25 | Auf diesen Beitrag antworten » | ||||||||||
| info | Puuh soweit hätte ich es endlich: #include <iostream> using namespace std; int main() { int a; int b; int c; cout << "Bitte Zahlen eingeben !" << endl; cin >> a; cout << "2 Zahl" << endl; cin >> b; cout << "3 Zahl" << endl; cin >> c; } Für die weitere vorgehensweise benötige ich paar tips , aber keine Lösung bitte. |
||||||||||
| 31.03.2013, 15:54 | Auf diesen Beitrag antworten » | ||||||||||
| Karlito | Hallo, dann mach dir erstmal klar, welche Fälle Du behandeln musst. Ich persönlich habe mir dafür eine Tabelle gemacht (keine Angst, das Programm, was ich geschickt hatte, solltest Du nicht verstehen). Fülle am Besten mal folgende Tabelle aus. In die Spalten x y und z kommen die Buchstaben a b und c, je nach dem, wie Du umspeichern musst. Die erste Zeile habe ich mal vorgegeben. VG, Karlito |
||||||||||
| 31.03.2013, 16:21 | Auf diesen Beitrag antworten » | ||||||||||
| info | Was muss ich denn beachten wenn ich die tabelle ausfülle . Das ist mir nicht so klar? |
||||||||||
| 31.03.2013, 16:29 | Auf diesen Beitrag antworten » | ||||||||||
| Karlito | Hi, links von dem Doppelstrich stehen die Bedingungen, die erfüllt sein müssen. Also z.B. a<b und rechts vom Doppelstrich stehen die Belegungen von x. y und z. Wenn also a<b und a<c und b<c falsch, also 0 sind, dann ist a größer oder gleich b, größer oder gleich c und b ist größer oder gleich c. Somit ist a die größte Zahl und c die kleinste. Dewegen kommt die Belegung x=c, y=b und z=a zustande. Das ist der Sinn der Tabelle. Klar? VG, Karlito |
||||||||||
| 05.04.2013, 17:09 | Auf diesen Beitrag antworten » | ||||||||||
| info | Oh man leute ich probiere schon die ganze Zaber ich verstehe nicht wie ich die Schleife erstellen soll? |
||||||||||
| 05.04.2013, 17:15 | Auf diesen Beitrag antworten » | ||||||||||
| eulerscheZahl | Gar nicht: Es gibt 3!=6 Fälle zu betrachten: a<=b<=c a<=c<=b b<=a<=c b<=c<=a c<=a<=b c<=b<=b Das kannst du mit if überprüfen. Dann entspechend x, y und z zuweisen. Der Aufbau ist dabei immer gleich, du könntest dir sogar ein Funktionsmakro schreiben. (Durch <= werden mache Fälle (z.B. a=b) mehrfach abgedeckt, macht aber nichts, da es bei zwei gleich großen Zahlen ja egal ist, in welcher Reihenfolge sie sortiert werden) |
||||||||||
|
|
