Hallo, ich bin dabei etwas über Arrays zu lernen. Ich möchte das mein Programm 5 Zahlen ihrer Größe nach ordnet.Das macht es leider nicht. Hier ist mein Quellcode, vielleicht könnt ihr mir da helfen.Danke schon mal. #include<iostream> using namespace std; int main (void) { int arr [5]= {17,-3,4,18,-9}; int hilf; int i,j; for (i=1;i <5;i++) { j=i; while (j>0 & arr [ j ] <arr [ j -1 ] ) { hilf = arr [ j ]; arr [ j ] = arr [ j - 1 ]; arr [ j - 1 ] = hilf; j-- ; } } cout << arr [ j ]; system ("Pause"); return 0; }
c anfänger schrieb: > Das macht es leider nicht. doch macht es, nur die Ausgabe ist bei dir nicht sinnvoll.
Es scheitert also an der Ausgabe.Hab schon vieles probiert jedoch kommt nichts gescheites bei raus
Hallo, setze die Bedingung so ein while (j>0 & (arr [ j ] <arr [ j -1 ]) ) { --- --- --- cout << arr [ j ]; }
Tamy schrieb: > while (j>0 & (arr [ j ] <arr [ j -1 ]) ) Sicher, dass hier der binäre Operator genommen werden sollte?
schau mal nach C-Programmierung: Liste der Operatoren nach Priorität: http://de.wikibooks.org/wiki/C-Programmierung:_Liste_der_Operatoren_nach_Priorität
Das logische UND (&&) ist hier auf jeden Fall dem bitweisen (&) vorzuziehen, da es für j=0 auf Grund seiner "Kurzschluss"-Eigenschaft den Lesezugriff auf arr[-1] (undefined behavior) verhindert.
c anfänger schrieb: > Es scheitert also an der Ausgabe.Hab schon vieles probiert jedoch kommt > nichts gescheites bei raus es scheitert an mehreren Sachen. Zuerst daran, dass du beim posten keine Code tags verwendet hast. Dann daran, dass deine Ausgabe nur ein element ausgibt. Dann daran, dass du bit operatoren anstatt von logischen benutzt (was in diesem Fall aber wahrscheinlich sogar gutgeht) Dann daran, dass du bis auf cout C anstatt c++ schreibst. Tamy schrieb: > Hallo, > > setze die Bedingung so ein > while (j>0 & (arr [ j ] <arr [ j -1 ]) ) > { > --- > --- > --- > cout << arr [ j ]; > } was soll es bringen einzelne Array Elemente während des Sortiervorgang auszugeben? Ich würde es so in etwa schreiben:
1 | #include <iostream> |
2 | #include <array> |
3 | #include <algorithm> |
4 | |
5 | int main (void) |
6 | {
|
7 | std::array<int, 5> arr = {17,-3,4,18,-9}; |
8 | int i,j; |
9 | |
10 | for (i=1; i < arr.size(); i++) { |
11 | for( j=i; (j>0) && (arr[j] < arr[j-1]); --j) { |
12 | std::swap(arr[j], arr[j-1]); |
13 | }
|
14 | }
|
15 | |
16 | for(const auto& s: arr){ |
17 | std::cout << s << ' '; |
18 | }
|
19 | |
20 | system ("Pause"); |
21 | return 0; |
22 | }
|
:
Bearbeitet durch User
Wenn C++ dann C++:
1 | std::sort( arr.begin(), arr.end() ); |
Bubble Sort ist echt nicht aus den Köpfen heraus zu bekommen ;-)
Torsten Robitzki schrieb: > Wenn C++ dann C++: > > std::sort( arr.begin(), arr.end() ); > > Bubble Sort ist echt nicht aus den Köpfen heraus zu bekommen ;-) Darum geht es primär doch gar nicht: c anfänger schrieb: > Hallo, ich bin dabei etwas über Arrays zu lernen. Aber selbst wenn er etwas über Sortieralgorithmen lernen wollte: Wird er sein Ziel erreichen, wenn er einfach eine fertige Bibliotheksfunktion aufruft? ;-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.