C++ Neuling
-
Hallo,
wir leren in der Schule C++ programmieren (1.Tag) und haben gleich eine Bomben-Aufgabe bekommen.Das Programm sollte so laufen:
-ich geben eine Zahl zwischen 1 und 100 ein
-wenn die Zahl größer als 50 ist, soll eine Zahlenreihe von dieser Zahl bis 100 auftauchen
-wenn die Zahl kleiner 50 ist, soll eine Zahlenreihe von dieser Zahl bis 0 auftauchen
-wenn diese Zahl gleich 50 ist, soll die Zahlenreihe nach oben und unten gehenich sitze schon 2 Stunden am pc, ohne erfolg.
kann mir da jemand helfen?
Danke, niko
-
Bin ich da ganz falsch mit meinem Ansatz?
#include <iostream> using namespace std; int main() { int zahl; zahl= >0; zahl= <101; { cout << "Geben sie eine Zahl zwischen 1 und 100 ein"; << endl; cin << zahl << endl; if(zahl<50) { cout << zahl << endl; zahl=zahl-1; } if(zahl>50) { cout << zahl << endl; Zahl=Zahl+1 } } return 0; }
-
Zerlege dein Problem in Teilprobleme. Ideal wäre es, falls ihr schon Funktionen hattet, dann kannst du für jedes Teilproblem eine Funktion schreiben. Falls nicht, kannst du den Quelltext für jedes Teilproblem schreiben und hinterher von Hand passend zusammenflicken.
Ich helfe dir mal bei der Zerlegung:
1. Gegeben eine Integer-Variable x, lese eine Zahl zwischen 1 und 100 ein. Dafür musst du die Eingabe können und if-Abfragen und Schleifen, vorzugsweise while. Oder Ohne Schleife und im Fehlerfall (x<1 oder x>100) abbrechen.
2. Gegeben eine Integer Variable x, prüfe auf folgende Bedingungen und reagiere jeweils: a) x>50: Gib "a)" aus. b) x<50: Gib "b)" aus. c) x==50: Gib "c)" aus. Dafür musst du if-Abfragen können, Bonuspunkte für else. Und Ausgaben, wobei die Ausgaben hier nur der Kontrolle für dich selbst dienen, später setzt du an der Stelle dann die passenden Teilprobleme 3, 4 oder 5 ein.
3. Gegeben eine Zahl x, gib Zahlen von x bis 100 aus. Dazu brauchst Schleifen, vorzugsweise for. Und Ausgabe.
4. Gegeben eine Zahl x, gib Zahlen von x bis 0 aus. Dazu brauchst Schleifen, vorzugsweise for. Und Ausgabe. Bei der for-Schleife musst du offensichtlich runterzählen, du musst daher verstanden haben, was jeder Parameter der for-Schleife genau macht.
5. Ist damit gemeint, Teilproblem 3 und danach Teilproblem 4 zu machen? Die Formulierung ist etwas schwammig.edit: Du hast mittlerweile einen Ansatz gepostet.
Leider ist fast alles komplett falsch. Die Aufgabe ist höchstwahrscheinlich zu schwierig für dich.
-
Könntest du mir erklären warum while besser ist als if?
Ich bin ja hier um es ein bisschen zu lernen, ist mein erster tag

-
weil du viele zahlen ausgeben willst brauchst du eine schleife (könntest auch for nehmen). und da du ganz sicher nicht in den quellcode schreiben willst: "cout << 1, 2, 3, 4, ......, 100" müsstest du das ganze dynamisch machen, halt per schleife
-
ich komme noch immer nicht weiter, habe while und else hergenommen, und bekomme noch keine lösung raus. Kann mir jemad den ansatz zeigen?
-
#include <iostream> int main() { unsigned short zahl; std::cout << "Zahl eingeben: "; std::cin >> zahl; if (zahl == 0 || zahl > 100) { std::cout << "\nUngueltige Eingabe!"; } else { char wahl = 0; if (zahl == 50) { std::cout << "\nBitte waehlen:\n\t(1) nach oben\n\t(2) nach unten\n\t\tAuswahl: "; std::cin >> wahl; } if (wahl == '1' || zahl > 50) { std::cout << "\n\n"; for (unsigned short i=zahl; i<=100; i++) std::cout << i << " "; } else if (wahl == '2' || zahl < 50) { std::cout << "\n\n"; for (unsigned short i=zahl; i>0; i--) std::cout << i << " "; std::cout << "0"; } else // zahl == 50 und wahl eine ungueltige ziffer { std::cout << "\nUngueltige Eingabe!"; } } std::cin >> zahl; return 0; }
-
Kannst du irgendeines der Teilprobleme lösen? Die Eingabe zu überprüfen ist sicherlich erst einmal das unwichtigste von den drein, da kannst du auch erst einmal ignorieren, wenn die Zahl <1 oder >100 sein sollte.
Eines noch: Compiliere auch immer mit vollen Warnoptionen, der Compiler kann dich auf viele Fehler aufmerksam machen, die Anfänger gerne machen, die er aber normalerweise schlucken muss, da angenommen wird, dass der Programmierer weiß, was er tut. Zum Beispiel deine Zeilen 9 und 10 sollten recht aufschlussreiche Warnungen ergeben. Die Zeilen 14 und 25 dürften gar nicht funktionieren.
edit: Na, da hast du jetzt aber Glück, dass du deine Hausaufgaben bekommen hast, ganz ohne heute etwas zu lernen. Dann dürfen wir uns gewiss schon auf nächste Woche freuen, wo du noch viel verzweifelter sein wirst, da du diese Woche nicht gründlich nachgearbeiten wirst und die Aufgabe nächstes Mal viel schwerer wird.
-
der compeiler zeigt mir fehler in der 9,10,13,14,25,26 zeile an
edit: SeppJ, ich bin nicht hier um die Hausübung gemacht zu bekommen, sondern ich will es selber versteht
und dieses programm verstehe ich onehin nicht
-
hallo,
also für den ersten Tag finde ich die Hausaufgabe schon bisschen viel...welche Sprachelemente habt ihr denn schon behandelt?
- Variablendeklaration/-definition
- variablentypen (int,bool,char,string,...)
- schleifen (while,for,...)
- bedingungsprüfung (if, switch/case,...)
- funktionen
- ein/ausgabe (cin/cout,printf,gets,...)habt ihr schon ein Programm compiliert? (welcher compiler,Entwicklungsumgebung/Konsole)
prinzipell sind die teilpeobleme schon gut formuliert...die 3 wenn-sätze kannst du in eine switch/case-unterscheiden oder if/else verwenden
für die Zahlenreihe brauchst du eine Schleife (z.b. for) die nacheinander die zahlen anzeigt (cout).
sonst versuche das Programm stückchenweise zum laufen zu bekommen:
1. Problem Eingabe (programm, was nur deine eingabe verwertet und wieder ausgibt)
2. prüfung auf bestimmte eingabe...Eingabe auf die werte (>50 oder <50) prüfen und nur anzeigen welcher Fall eingetreten ist
...hoffe, ich konnte dir auch bisschen helfen
Gruß Frank
-
danke für eure Hilfe, hb es hinbekommen!
#include <iostream> using namespace std; int main() { int zahl,x; zahl=100; cout << "Geben sie eine Zahl zwischen 1 und 100 ein" << endl; cin >> x; if(x<50) { while(x>=1) { x=x-1; cout << x <<endl; } } else { while(x<=99) { x=x+1; cout << x << endl; } } return 0; }
-

Und wenn x gleich 50 ist?
-
@Auch C++ Neuling: bitte nächstes Mal bei solchen Fragen keine Komplettlösungen posten, sonst ist der Lerneffekt minimal.
-
Kleine Anmerkung: Die eingegebene Zahl wird bei dir nicht ausgegeben.
-
@wurstinator Die eingegebene Zahl wird ausgegeben.
-
Nein, sie steht nur in der Konsole, weil du sie vorher eingibst.
Wenn du die Zwischenzeichen bei der Ausgabe etwas veränderst, sieht man das gut:
int main() { int zahl,x; zahl=100; cout << "Geben sie eine Zahl zwischen 1 und 100 ein" << endl; cin >> x; cout << endl << endl; if(x<50) { while(x>=1) { x=x-1; cout << x << ' '; } } else { while(x<=99) { x=x+1; cout << x << ' '; } } return 0; }Ausgabe:
7778 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
-
ok danke für den tipp

-
Niko.S schrieb:
...
Das Programm sollte so laufen:
-ich geben eine Zahl zwischen 1 und 100 ein
...
-wenn diese Zahl gleich 50 ist, soll die Zahlenreihe nach oben und unten gehenDer Fall das die Zahl kleiner als 1 oder gar grösser als 100 ist wird in deinem Code (bisher) nicht berücksichtigt
und auch der dritte Punkt welcher erfüllt sein muss (wenn die Eingabe gleich 50 ist) 
Gruss