Sortieralgorithmus + Zugriffsverletzung
-
Hallo,
ich möchte ein Programm schreiben, das einen Array der Laenge 6 mit random-ints belegt und schritt für schritt nach größe ordnet. sobald die "ausgangssituation" erreicht wurde bekomme ich eine nervtötende fehlermeldung, die besagt dass es eine zugriffsverletzung in der funktion in der unten markierten zeile gab.
könnt ihr mir sagen was hier falsch ist und was ich verändern muss?
#include <iostream> using namespace std; void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp; } void sort(int* aray, int i){ for (i; i<i+1; i++) { //solange i kleiner ist als sein nachfolger /* --> FehlerZeile --> */if (aray[i] > aray[i+1]) { //wenn feld des arrays einen kleineren wert besitzt //als sein nachfolger swap(aray[i],aray[i+1]); //dann vertausche die arrays } } } int main(){ int i; int* arr = new int[6]; //Erstelle neues array der Laenge 6 for (i = 0; i<6; i++){ //Belege Felder mit random-integers arr[i] = rand(); } cout<<"Ausgangssituation "; //Ausgangssituation for (i = 0; i<6; i++){ cout<<arr[i]<<" "; } cout<<" "<< endl; for (i=0; i<6; i++){ sort(arr, i); cout<<"Schritt "<<i<<": "; for (int j=0; j<6; j++){ cout<<arr[j]; } cout<<" "<< endl; } system("Pause"); }In der Vergangenheit wurden viele stilistische Dinge in meinen Codes bemängelt, bitte seid gnädig, ich bin nur ein kleiner angehender ingenieur der programmieren lernen will

-
MAX2.0 schrieb:
Hallo,
void sort(int* aray, int i){ for (i; i<i+1; i++) { //solange i kleiner ist als sein nachfolgerDie Bedingung i < i+1 ist immer (naja, sehr lange) wahr.
Lars
-
Ich habe jetzt nicht alles durchgelesen, nur die dicksten Hauer:
for (i; i<i+1; i++) {Was glaubst du, wann diese Schleife abbricht?
swap(aray[i],aray[i+1]);Das soll compilieren? Es passt jedenfalls nicht zu deiner swap-Funktion. Zufällig bindet dein Compiler wohl über iostream auch noch std::swap ein, welches hier genommen wird.
-
Es bringt dir mehr, wenn du den Code selber debuggst, denn das gehört zu einem angehendem Ing. auch dazu, dass man Fehler selbst finden kann. (korrekten Stil ebenfalls).
Im übrigen gibt es sehr viele Sortieralgorithmen, welche du anwenden kannst. Wähl doch einen aus und dann findest du genügend Implementierungen, an welche du dich halten kannst.