Zahlen sortieren, Programm gibt aber nix aus
-
Hallo,
Ich habe ein Problem mit einem Cpp-Programm. Und zwar sollen Zahlen der Größe nach sortiert werden. Das Programm kann ich fehlerfrei ausführen, aber es gibt nichts aus. Ich habe mich auch schon mit dem Debugger dran versucht und bin nicht weitergekommen. Hier ist der Code.
Hat vielleicht jemand eine Idee woran es liegen könnte?#include<iostream> using std::cout; using std::endl; //insertion sort, several errors int X[10]={12,5,9,3,2,25,8,19,200,10}; //input array int Y[10]; //workspace array int NumInputs; //length of input array int NumY=0; //current number of elements in Y void GetArgs(int X[],int AC, char**AV) { NumInputs=AC-1; for(int I=0; I<NumInputs; I++) X[I]=atoi(AV[I+1]); void ScootOver(int JJ) { for (int K=NumY-1; K>JJ; K++) Y[K]=Y[K-1]; } void Insert(int NewY) { if(NumY==0) //in der if-Bdg. muss '==' stehen, ansonsten hat NumY den Wert 0! { Y[0]=NewY; return ; } //need to insert just before the first Y //element that NewY is less than for(int J=0; J<NumY; J++) { if (NewY<Y[J]) { //shift Y[J], Y[J+1],...rightward //before inserting NewY ScootOver(J); Y[J]=NewY; return; } } } void ProcessData() { for(NumY=0; NumY<NumInputs; NumY++) //insert new Y in the proper place //among Y[0],...,Y[NumY-1] Insert(X[NumY]); } void PrintResults() { for(int I=0; I<NumInputs; I++) cout<<Y[I]<<endl; } int main (int AC,char**Argv) { GetArgs(X,AC, Argv); ProcessData(); PrintResults(); system("Pause"); }
-
haste es denn auch gestartet mit
sort.exe 432 231 65 3 231 5 56?
-
Hallo volkard,
Ich benutze Visual C++ 2008 und habe es mit dem normalen Debug-Modus gestartet und dann kommt halt nix...
Bin gerade immer noch mit dem Debugger dran. Ein Fehler ist wohl, daß NumInputs den Wert 0 hat, aber ich weiß nicht genau wie ich das beheben koennte.
-
jiinex schrieb:
int main (int AC,char**Argv)Du kannst zwar die Parameter benennen, wie du willst, aber du solltest dich vielleicht doch besser an die übliche Art (argc, argv) halten. Das macht es z.B. anderen leichter, die deinen Code lesen oder verwenden müssen.
EDIT: Starte die exe mit Kommandozeilenparametern. Dann siehst du sicher, dass es klappt. Wenn dem Programm keine Parameter übergeben werden, gibt's auch nix auszugeben. Im VS kannst du Kommandozeilenparameter festlegen (Debugging=>Befehlsargumente).
-
jiinex schrieb:
den Wert 0 hat, aber ich weiß nicht genau wie ich das beheben koennte.
dann mach
int NumInputs=10;und ruf GetArgs nicht auf.