in array zahle einlesen abschluss mit 0
-
hustbaer schrieb:
Weil es in C++ std::vector und std::sort gibt, und damit kaum mehr einen Grund warum das Limit 50 in der Aufgabenstellung stehen sollte, noch dass die Zahlen bereits sortiert sind.
Mann muss sich mit dem Low Level Zeugs befasen, bevor man auf High-Level geht.
-
Warum schrieb:
hustbaer schrieb:
Weil es in C++ std::vector und std::sort gibt, und damit kaum mehr einen Grund warum das Limit 50 in der Aufgabenstellung stehen sollte, noch dass die Zahlen bereits sortiert sind.
Mann muss sich mit dem Low Level Zeugs befasen, bevor man auf High-Level geht.
Nein, mit dem "Low Level Zeugs" kann man sich befassen, wenn man mir vector, string und Co umgehen kann.
-
manni66 schrieb:
Warum schrieb:
hustbaer schrieb:
Weil es in C++ std::vector und std::sort gibt, und damit kaum mehr einen Grund warum das Limit 50 in der Aufgabenstellung stehen sollte, noch dass die Zahlen bereits sortiert sind.
Mann muss sich mit dem Low Level Zeugs befasen, bevor man auf High-Level geht.
Nein, mit dem "Low Level Zeugs" kann man sich befassen, wenn man mir vector, string und Co umgehen kann.
Wenn man vorher Arrays kann, versteht man Vector & Co viel besser.
Das ist glaub ich aber ziemlich subjektiv.
-
Warum schrieb:
manni66 schrieb:
Warum schrieb:
hustbaer schrieb:
Weil es in C++ std::vector und std::sort gibt, und damit kaum mehr einen Grund warum das Limit 50 in der Aufgabenstellung stehen sollte, noch dass die Zahlen bereits sortiert sind.
Mann muss sich mit dem Low Level Zeugs befasen, bevor man auf High-Level geht.
Nein, mit dem "Low Level Zeugs" kann man sich befassen, wenn man mir vector, string und Co umgehen kann.
Wenn man vorher Arrays kann, versteht man Vector & Co viel besser.
Das ist glaub ich aber ziemlich subjektiv.Was sollte einem da zu einem besseren Verständnis verhelfen?
-
Eisflamme schrieb:
Ich bin da pädagogisch aber nicht so sicher, ob die nicht erstmal lernen sollten wie Arrays funktionieren und später vector und sort lernen. Ich meine, wenn man sort auf einen vector nutzt, muss man direkt das Konzept von Iteratoren erklären.
Ich ziehe den Schluss daraus, dass sehr früh Iteratoren erklärt werden sollten, weil das so ein zentrales Konzept ist. Als Beispiel für einen Random Access Iterator kann man dann den Zeiger einführen.
vectorsollte der erste Typ sein, der nach den pritimiven, numerischen Datentypen eingeführt wird. Dann kommen Referenzen,constund dann der Vergleich Zeiger vs.vector::iterator. Erst dann würde ichstringeinführen und eindringlich von C-Strings abraten (strlenundprintfsind böse,strcpyundgetsTodsünden, jeweils mit Beispielen undefinierten Verhaltens, gerne mit Verweis auf Sicherheitslücken, damit der letzte DAU es versteht).
Schließlich kommt ein Beispiel, in dem die Größe einesvectors nicht erst zur Laufzeit ermittelt wird. Und weil man in C++ nur das bezahlt, was man auch benutzt, wird stattdessenarraygenutzt. Anschließend wird als Negativbeispiel das C-Array gezeigt.
Als weiteres zentrales Konzept werden Template-Funktionen besprochen und Algorithmen wiefind,swapodersortgezeigt.
Jetzt kann man so langsam mit Klassen anfangen.
Exceptions wirken in diesem Kontext einfach und natürlich, weil der bisherige Code immer ausnahmesicher gewesen ist. Es wird ein Beispiel für eine eigene Ressource programmiert und deren Vergabe mit RAII ebenfalls ausnahmesicher gemacht.
[...]
Ganz am Ende unter "das gibt es leider auch noch" wird dann der Vollständigkeit halber vornew[]unddelete[]gewarnt.
Im Anhang gäbe es eine Tabelle mit allen Standardfunktionen und -konstanten von C und den C++-Äquivalenten.malloc vector<T>, unique_ptr<T>(new T(..)) free - (siehe RAII) atoi stoi strcpy string::operator = (const char *) exit throw (man würde eine Ausnahme werfen) atexit - (siehe RAII) fopen ifstream/ofstream(..) fclose ifstream::~ifstream (siehe RAII), ifstream::close memcpy copy (siehe Kopie) memset fill strchr find .. INT_MAX numeric_limits<int>::max()Eisflamme schrieb:
Würdet ihr in einem Tutorial/Kurs sofort mit vector arbeiten?
Ja.
In der Flugschule springt man in der ersten Stunde ja auch nicht mit einem Papierflugzeug von einer Klippe, nur weil man das vor 150 Jahren so versucht hat.
-
SeppJ schrieb:
nata schrieb:
meine Aufgabestellung ist Lesen Sie beliebig viele (max. 50) Zahlen (Abschluss mit dem Wert 0) ein, speichern Sie diese in einem Feld und geben Sie Mittelwert, Median und die Standardabweichung der Zahlen aus. (Bei der Ermittlung der Medians können Sie davon ausgehen, dass die Zahlen schon sortiert sind, vom Benutzer also entweder in aufsteigender oder in fallender Reihenfolge eingegeben werden.)
Mit Verlaub, aber: Das ist eine selten bescheuerte Aufgabenstellung. Ich gehe sogar aufgrund dieser Aufgabenstellung so weit, zu sagen, dass dein Lehrer keine Ahnung von C++ hat und stattdessen vor 40 Jahren mal C (oder gar Fortran?) gelernt hat und mit euch nun C mit cout macht, anstatt C++.
Mit Verlaub, aber: Da du den Schwerpunkt des Kurses nicht kennst sind das gewagte Behauptungen. In solchen Anfängerkursen stehen meist allgemeinere Konzepte im Vordergrund. Bibliotheken sind nicht wichtig und häufig wird deren Verwendung sogar untersagt und auch die Programmiersprache selbst spielt keine zentrale Rolle. Die Aufgabenstellung ist absolut OK.
-
int main() { /*Lesen Sie beliebig viele (max. 50) Zahlen [...] ein*/ const int max = 50; int Zahlen[max]; int zahlen_eingegeben = 0; for(int neu; std::cin >> neu; ) { /*(Abschluss mit dem Wert 0)*/ if(neu == 0) break; /* speichern Sie diese in einem Feld */ Zahlen[zahlen_eingegeben++] = neu; } /* ... */ }den rest bekommst du selbst hin. der aufgabenstellung zu folge nehme ich mal an, dass dein lehrer es so möchte und du es so am ehesten verstehst.
PS:
Bibliotheken sind nicht wichtig und häufig wird deren Verwendung sogar untersagt
damit man programmiersprachen-spezifisch dinge lernt und damit widersprichst du dir selbst. tja

-
unskilled schrieb:
PS:
Bibliotheken sind nicht wichtig und häufig wird deren Verwendung sogar untersagt
damit man programmiersprachen-spezifisch dinge lernt und damit widersprichst du dir selbst. tja

Das ist mal absoluter Nonsens.
Und bei deiner Interpretation der Aufgabenstellung hättest du ruhig mehr auf Verständnis achten können als darauf zeigen zu wollen was für ein toller Hecht du bist.

-
danke für eure zahlreiche Antwort
#include <iostream> using namespace std; int main() { /*Lesen Sie beliebig viele (max. 50) Zahlen [...] ein*/ const int max = 50; int zahlen[max]; int zahlen_eingegeben = 0; int neu; cin >> neu; /*(Abschluss mit dem Wert 0)*/ if(neu != 0){ /* speichern Sie diese in einem Feld */ zahlen[zahlen_eingegeben++] = neu; }else{ break; } for(int i = 0; i < max; i++) cout << zahlen[i]<< endl; return 0; }in dem fall sagt mir dass breal nur bei switsch und loop benutzen kann.
und wenn ich so mache was logischerweise funktionieren soll. b
#include <iostream> using namespace std; int main() { /*Lesen Sie beliebig viele (max. 50) Zahlen [...] ein*/ const int max = 50; int zahlen[max]; int zahlen_eingegeben = 0; int neu; while (neu != 0) { cin >> neu; /*(Abschluss mit dem Wert 0)*/ if(neu != 0){ /* speichern Sie diese in einem Feld */ zahlen[zahlen_eingegeben++] = neu; } } for(int i = 0; i < max; i++) cout << zahlen[i]<< endl; return 0; }bekomme ich die ausgabe. sofort nachdem ausführen,ohne dass ich wert eingebe
**0
0
9
0
1606419960
32767
7
0
1606664232
32767
1606416768
32767
1606416704
32767
1606424274
32767
0
0
1606418464
32767
0
0
1606416752
32767
0
1
0
1
1606418432
32767
0
0
1606419960
32767
9
9
1606416928
32767
1606420320
32767
0
0
0
0
0
0
0
0
0
0
**
wie kann man am bessten machen?
-
Du solltest neu initialisieren. also int neu= 1; sonst steht eine zufällige Zahl bei dir drin und ich vermute, dass dein compiler das "zufällig" für dich auf 0 setzt

und natürlich solltest du nur so viele zahlen ausgeben, wie eingegeben wurden. So gibst du ja immer das komplette array aus.
-
danke für deine Antwort. hat mich weitergebracht.
und ich habe dann in der for schleife so geschrieben und hat funktioniert
for(int i = 0; zahlen[i] != 0; i++) cout << zahlen[i]<< endl;ich bin so motiviert
danke euch allen
-
nein, das klappt so nicht. Bzw wenn es funktioniert, dann gerade nur durch Zufall. Was passiert zum Beispiel, wenn ein Benutzer genau 50 Zahlen eingibt?
Benutze einfach zahlen_eingegeben.
-
danke
