komische Ausgabe obwohl Funktion identisch
-
Klingt gut und logisch, danke für die Erläuterung.
-
Danke, für die ausführlichen Antworten, mit sowas habe ich überhaupt nicht gerechnet. An sich sieht es ziehmlich simpel aus, aber der Teufel steckt meist im Detail, wie man so schön sagt. Daher werde ich mich erstmal damit explizit auseinander setzten und versuche es zu verstehen.
Ich dachte das wäre die Prüfung, aber anscheinend hast du recht. Er würde ja trotzdem jedes Element durchsuchen, unabhängig davon ob es sortiert ist oder nicht.
-
Skylac06 schrieb:
unskilled schrieb:
Deshalb muss auch die einen Wert zurückliefern, das ist normalerweise 0.
Also einfach ein
return 0;
no need. stört nur
Dann habe ich das falsch gelernt. Danke für die Korrektur.
Aber sollte man dann nicht auch eher eine void main() benutzen?nein
-
for (auto i: values)
Was bedeutet diese Zeile SeppJ?
-
Das ist eine Range-For-Schleife, die alle Elemente von value nacheinander durchläuft und in die Variable i füllt. Mit i kann dann stellvertretend für das Element innerhalb der Schleife gearbeitet werden.
Das Schlüsselwort auto bestimmt hierbei automatisch den benötigten Datentyp.
-
Versuch schon die ganze Zeit, damit der code funktioniert nur klappt es nicht.
Problem liegt einmal beim auto wert und einmal in der Zeile.sort_a(begin(values), end(values));
hier sagt er nur end was not declared in this scope.
und begin was not declared in this scope.
-
Welchen Compiler benutzt du denn?
Das Schlüsselwort auto wird glaube ich erst ab C++11 (?) unterstützt.
Du kannst hier auch einfach auto durch int ersetzen.Und wie kommst du auf begin(values) und end(values)?
Der Compiler sucht hier vermutlich nach Funktionen mit dem Namen, die in der Form natürlich nicht existieren.
Da begin und end in der main-Funktion gar nicht existieren kannst du sie natürlich auch nicht an die Funktion übergeben. Hier musst du die Adressen von values[0] und values[9] übergeben. Die bekommst du über den Adressen-Operator &.
Bist du inzwischen bereits bei dem Thema Zeiger in deinem Buch angekommen?
Davor solltest du sie vermutlich erstmal meiden.
-
Du musst C++11 oder höher bei deinem Compiler aktivieren. Deiner läuft wahrscheinlich auf C++98 (wie in 1998, also guck mal auf den Kalender).
-
CodeBlocks, GNU GCC Compiler.
Hattes das vor einiger Zeit mal eingerichtet, was wie ein Spaß das doch war.
-
HiHi,
ich bräuchte nochmal eure Hilfe.
Ich habe versucht den Test der Aufgabe durchzuführen mit Hilfe einer zusätzlichen Funktion. Sie funktioniert auch, nur gibt sie mir nicht den gewünschten Wert wieder, sodass ich sie in der main()benutzen kann.
Die Function soll testen ob values[0] immer kleiner ist als alle anderen Zahlen innerhalb der Array. Wenn dies nicht so ist, soll er x+1 rechnen, um diese Zahl dann später in der Main für die IF Anweisung zu nutzen.
Die cout<< lass ich jetzt einfach mal drin, da sie mir helfen.#include <iostream> using namespace std; void check_sort(int x); void sort_a(int *begin, int *end) { for(int *i = begin; i !=end ; i++) { for(int *j = begin; j != end; j++) { if(*i<*j) { int temp = *i; *i = *j; *j = temp; } } } } void check_sort(int x) { int values[10]={23,11,67,3,9,0,28,30,21,15}; for(int i = 0; i<1; i++) { cout<<values[i]<<" first for\n"; for( int j = 0+1;j<10;j++) { cout<<values[j]<<" second for\n" ; if(values[i]>values[j]) { cout <<values[i]<< " i j "<<values[j]<< " ist es größer\n"; int x =x+ 1; } } } cout << x <<" x"; } int main() { int values[10]={23,11,67,3,9,0,28,30,21,15}; check_sort(x); cout<<"\n"<<x<< " nnormal hier\n"; if(x!=0) { cout <<"Old Array: "; for(int i = 0; i <10-1; i++) { cout<< values[i]<<" | "; } sort_a(&values[0], &values[10]); cout<<"\n\nNew Array: "; for(auto i : values) { cout <<""<< i << " | "; } } }
-
Was prüft die Funktion? Wirklich? Schau noch mal genau hin.
In die Funktion geht ein Wert rein, aber keiner raus. Stichworte: return, call byte value, call byte reference.
-
Es stellen sich noch mehr Fragen. Zum Beispiel, wo das "x" denn herkommt. Das kann doch so gar nicht kompilieren!
Dann frage ich mich noch:
- warum hast du 2 Arraysvalues[10]
im Programm?
- was sollfor(int i = 0; i<1; i++)
tun?
- deine Einrückungen sind merkwürdig, gehen sie doch manchmal auch nach links?!
- versuche außerdem mal, überall auf die "10" zu verzichten und lieber eine Konstante oder (noch besser) eine automatisch berechnete Größe einzusetzen
-
was soll for(int i = 0; i<1; i++) tun?
Er soll heir nur die erste Zahl des Arrays mit den anderen danach vergleichen, sodass die 23 fix ist und alle danach getestet werden.
Funktioniert jetzt zwar, aber es wird bestimmt falsch sein. Also bitte verbessern. Unter der automatisch berechneten größe kann ich mir noch nichts vorstellen. Auch ist mir unklar wie ich auf eine Array verzichten kann, vielleicht weil mir die Übergaben noch nicht so ganz einleuchten.#include <iostream> using namespace std; void check_sort(); int x; void sort_a(int *begin, int *end) { for(int *i = begin; i !=end ; i++) { for(int *j = begin; j != end; j++) { if(*i<*j) { int temp = *i; *i = *j; *j = temp; } } } } void check_sort() { int values[10]={23,11,67,3,9,0,28,30,21,15}; for(int i = 0; i<1; i++) { cout<<values[i]<<" first for\n"; for( int j = 0+1;j<10;j++) { cout<<values[j]<<" second for\n" ; if(values[i]>values[j]) { cout <<values[i]<< " i j "<<values[j]<< " ist es größer\n"; x= x+ 1; } } } cout << x; } int main() { int values[10]={23,11,67,3,9,0,28,30,21,15}; check_sort(); cout<<"\n"<<x<< " nnormal hier\n"; if(x!=0) { cout <<"Old Array: "; for(int i = 0; i <10; i++) { cout<< values[i]<<" | "; } sort_a(&values[0], &values[10]); cout<<"\n\nNew Array: "; for(auto i : values) { cout <<""<< i << " | "; } } }
-
saveit schrieb:
Also bitte verbessern
Ja, genauso sieht das aus: ich hab keine Ahnung, macht mal meine Hausaufgaben.
-
Wo kommt die Annahme der Hausaufgaben her?
-
saveit schrieb:
Wo kommt die Annahme der Hausaufgaben her?
Weil du eine Nullbockhaltung an den Tag legst.
Du gehst nicht wirklich auf Kommentare ein:wob schrieb:
- warum hast du 2 Arrays values[10] im Programm?
- was soll for(int i = 0; i<1; i++) tun?
- deine Einrückungen sind merkwürdig, gehen sie doch manchmal auch nach links?!
- versuche außerdem mal, überall auf die "10" zu verzichten und lieber eine Konstante oder (noch besser) eine automatisch berechnete Größe einzusetzenDu denkst nicht wirklich über den Code nach:
saveit schrieb:
Er soll heir nur die erste Zahl des Arrays mit den anderen danach vergleichen, sodass die 23 fix ist und alle danach getestet werden.
... oder du kannst auch direkt auf die Schleife verzichten und direkt
values[0]
verwenden.Und vor allem:
saveit schrieb:
Also bitte verbessern
Nee, Freundchen. Das ist dein Job. Wenn du das nicht kannst, nochmal das Lehrbuch durchgehen. Wenn das Lehrbuch dies nicht behandelt, wegwerfen und ein besseres durchlesen. Du hast bereits mehr als genug Punkte gelistet bekommen; behandele die erstmal, dann sehen wir weiter.
Dieses "Versteh' ich nicht, lass ich mal die Nerds machen" kennt man zuhauf von Leuten, die nur 'ne gute Note einheimsen wollen. Wenn das bei dir nicht der Fall ist, musst du uns zeigen, dass du bereit bist, andere Vorschläge anzunehmen und selbstständig zu arbeiten.
Oder du wartest einfach auf den nächsten Volltrottel, dessen Ego schwach genug ist, dass er sich mit dir befasst. Das ist dann aber sein Bier.
-
dachschaden schrieb:
Oder du wartest einfach auf den nächsten Volltrottel, dessen Ego schwach genug ist, dass er sich mit dir befasst. Das ist dann aber sein Bier.
Mir ist die Selbstironie dieses Schlußsatzes nicht entgangen, trotzdem unterlass doch bitte in Zukunft solche Aussagen. Sie sind weder originell, noch hilfreich.
Beleidigungen und Küchentischpsychologie postest Du lieber in NadrW als hier in C++.
-
Ktp schrieb:
Mir ist die Selbstironie dieses Schlußsatzes nicht entgangen
Wieso? Der OP hat immer noch seine Hausaufgaben nicht gemacht bekommen.
Ktp schrieb:
Beleidigungen und Küchentischpsychologie postest Du lieber in NadrW als hier in C++.
Wenn du dich angesprochen fühlst, dann fühlst du dich zurecht angesprochen. Ansonsten habe ich gerade die Luft beleidigt. Verklag mich, wenn's dir nicht gefällt.
-
Ich dachte ich überspringe deinen Post einfach, aber nun denn.
Weil du eine Nullbockhaltung an den Tag legst.
Nullbock heißt... einen Thread zu eröffnen und nicht zu antworten oder ähnlichem.
Du gehst nicht wirklich auf Kommentare ein:
Sie gut wie es geht... da musst du wohl nochmal lesen.
Nee, Freundchen. Das ist dein Job. Wenn du das nicht kannst, nochmal das Lehrbuch durchgehen. Wenn das Lehrbuch dies nicht behandelt, wegwerfen und ein besseres durchlesen. Du hast bereits mehr als genug Punkte gelistet bekommen; behandele die erstmal, dann sehen wir weiter.
Dieses "Versteh' ich nicht, lass ich mal die Nerds machen" kennt man zuhauf von Leuten, die nur 'ne gute Note einheimsen wollen. Wenn das bei dir nicht der Fall ist, musst du uns zeigen, dass du bereit bist, andere Vorschläge anzunehmen und selbstständig zu arbeiten.
Oder du wartest einfach auf den nächsten Volltrottel, dessen Ego schwach genug ist, dass er sich mit dir befasst. Das ist dann aber sein Bier.
Das kommentiere ich jetzt nicht weiter, aber solche Texte zu schreiben in einem Hilfsforum hilft keinem und sollte auch nicht die Regel sein. Aber jeder wie er es gerne hätte.
Oder du wartest einfach auf den nächsten Volltrottel, dessen Ego schwach genug ist, dass er sich mit dir befasst.
Dein Ego ist also ü̱berdimensional ausgepräg
?
[quote] Der OP hat immer noch seine Hausaufgaben nicht gemacht bekommen.[code]
... nochmal lesen. Ich weiß nicht wie ihr auf Hausaufgaben kommt. Bin ich hier auf dem Schulhof?
-
saveit schrieb:
Ich dachte ich überspringe deinen Post einfach, aber nun denn.
So, wie du das sonst auch gemacht hättest?
Trotzdem, ein gutes Zeichen. Das heißt, dass du lernfähig bist.
(und nein, das ist kein Sarkasmus).
saveit schrieb:
Nullbock heißt... einen Thread zu eröffnen und nicht zu antworten oder ähnlichem.
Oder ein paar dutzend Zeilen Code zu posten, schlecht formatiert, während Sachen nicht gefixt wurden, auf die man bereits aufmerksam gemacht hat ...
saveit schrieb:
Sie gut wie es geht... da musst du wohl nochmal lesen.
Dein Ernst?
Man hat dir bereits den Begriff "automatisch berechnete Größe gegeben". Wenn du jetzt mal selbst den Arsch hochbekommen und
c++ automatic array size
gegoogelt hättest, dann wärst du auf diesen Post gestoßen, der beschreibt, wie du auf die explizite Angabe von Arraygrößen verzichten kannst."So gut es geht" ist also komplett halbarschig?
Your call.saveit schrieb:
Das kommentiere ich jetzt nicht weiter, aber solche Texte zu schreiben in einem Hilfsforum hilft keinem und sollte auch nicht die Regel sein. Aber jeder wie er es gerne hätte.
Das Hilfsforum soll nicht dazu dienen, hier ohne Sinn und Verstand zu posten. Wenn dir das nicht gefällt, kannst du gerne die beleidigte Leberwurst spielen und die Koffer packen. Oder du wirst erwachsen und fragst dann nach, wenn du mit der ersten Seite Google noch keine Ergebnisse erzielst/du die Lösungen komplett nicht verstanden hast. Sonst kommst du einfach wie ein Faulpelz rüber. Das ist nicht schlimm, Programmierer sind faul. Aber du wärst dann ein Faulpelz, der will, dass andere deine Arbeit machen.
And that ain't cool.
saveit schrieb:
... nochmal lesen. Ich weiß nicht wie ihr auf Hausaufgaben kommt. Bin ich hier auf dem Schulhof?
Du nimmst das Wort "Hausaufgaben" zu wörtlich.