suche c/c++ profis die mir helfen können
-
Original erstellt von morpheus0023:
ich weiß nur nicht wie ich die einzelnen schritte ausgeben soll!!! ich hoffe das diesmal mein post genau durchgelesen wird und dann geantwortet wird! sorry aber wenn ich sowas lese fang ich an zu kochen! ich bin doch kein 5ft klässler mehr der andere leute bittet seine hausaufgaben zu machen!!! vielleicht findet sich ja noch einer der mir intelligente antworten geben kann!!!Auf intelligente Fragen gibt es auch intelligente Antworten. Zunächst einmal. Weißt du nicht was du nach jedem Durchgang ausgeben sollst, wie du es ausgeben sollst, oder wann du es wohin ausgeben sollst? Fragen über Fragen. Also werd doch bitte mal präziser wenn dir geholfen werden soll. Aus deinen Fragen verstehe ich, dass du eine Zeile ausgeben kannst aber anscheinend nicht in der Lage bist dies nach jedem Schleifendurchlauf, bzw. jeder Rekursion zu machen. Poste doch mal ein Stück Code und dir kann sicher geholfen werden.
-
ich würde mir vielleicht mal ein c++-buch zulegen bzw. on tut lesen.....
so schwer is die aufgabe wirklich nicht !!
ausserdem: ich bin auch dafür, dass die leute hier nicht die "faulheit" anderer unterstützen !
-
hier mein kompletter code:
#include <iostream>
using namespace std;void quicksort(int array[], int anf, int end)
{int l = anf;
int r = end;
int pivot = array[(l+r)/2];
int tmp;do
{
while((array[l] < pivot) && (l < end)) l++;
while((array[r] > pivot) && (r > anf)) r--;if (l <= r)
{
tmp = array[l];
array[l] = array[r];
array[r] = tmp;
l++;
r--;
}}while(l <= r);
if(anf < r)
quicksort(array,anf,r);
if(l < end)
quicksort(array,l,end);
}
/*void ausgabe(int array[], int max)
{for (int i=1; i <= max; i++)
cout<<" "<<array[i];
} */
int main(int argc, char *argv[])
{int max=argc-1,z,i,j;
int array[max];for (i=1;i<=max;i++)
{
//j=i+1;
z=atoi(argv[i]);
array[i]=z;
}
quicksort(array, 0, max);
//ausgabe(array, max);for(i=1;i<=max;i++)
cout<<" "<<argv[i]; //ausgabe der unsort zahlencout<<"\n";
char string[max];
char a='<';
cout<<a;
for(i=1;i<=max;i++)
{
string[i]='-';
cout<<string[i];}
char b='>';
cout<<b;return 0;
}
-
Bitte mach das in Code tags
dein Code
-
Wenn ich das Musterbeispiel richtig verstanden habe soll jedes mal wenn etwas
in Quicksort getauscht wird alle aktuellen Zahlen ausgegeben werden.
Du must nur gucken wo etwas getauscht wird und dort die Zahlen ausgeben.
-
ich hoff is ist richtig:
#include <iostream> using namespace std; void quicksort(int array[], int anf, int end) { int l = anf; int r = end; int pivot = array[(l+r)/2]; int tmp; do { while((array[l] < pivot) && (l < end)) l++; while((array[r] > pivot) && (r > anf)) r--; if (l <= r) { tmp = array[l]; array[l] = array[r]; array[r] = tmp; l++; r--; } }while(l <= r); if(anf < r) quicksort(array,anf,r); if(l < end) quicksort(array,l,end); } /*void ausgabe(int array[], int max) { for (int i=1; i <= max; i++) cout<<" "<<array[i]; } */ int main(int argc, char *argv[]) { int max=argc-1,z,i,j; int array[max]; for (i=1;i<=max;i++) { //j=i+1; z=atoi(argv[i]); array[i]=z; } quicksort(array, 0, max); //ausgabe(array, max); for(i=1;i<=max;i++) cout<<" "<<argv[i]; //ausgabe der unsort zahlen cout<<"\n"; char string[max]; char a='<'; cout<<a; for(i=1;i<=max;i++) { string[i]='-'; cout<<string[i]; } char b='>'; cout<<b; return 0; }
-
so leicht es ist leider nicht c newbie.
das hab ich schon ausprobiert, kommt nur scheisse bei raus.
vielleicht kann ja mal einer den code compilieren und mir evtl. ein tip geben.
-
wenn ich das richtig verstanden hab, musst du vor
tmp = array[l]; array[l] = array[r]; array[r] = tmp;
noch ein
cout << "Swapping " << l << " <-> " << r << endl;
-
also das mit deim swaping da funzt überhaupt ned! ka was du dir da bei gedacht hast! bin allerdings etwas weiter gekommen, vielleicht kann ja mal einer drüber schauen und mit der musterlösung vergleichen. bin für jeden tipp zu haben!
#include <iostream> #include <stdio.h> using namespace std; void ausgabe_bereich(int array[], int rekur_counter, int max, int pivot) { int i; cout<<" sort: "; for (int i=1; i <= max; i++) cout<<" "<<array[i]; cout<<"\n"; char string[max]; char a='<'; cout<<"rekur_counter: "<<rekur_counter<<" "<<a; for(i=1;i<=max;i++) { string[i]='-'; cout<<string[i]<<string[i]; } char b='>'; cout<<b; cout<<" pivot: "<<pivot<<endl; /*int i; for(i=0; i<l; i++) { printf(" "); } printf("<"); for(; i<r; i++) { printf("----"); } printf("-->\n"); */ } void quicksort(int array[], int anf, int end) { static int rekur_counter; rekur_counter++; int l = anf; int r = end; int pivot = array[(l+r)/2]; int tmp; do { while((array[l] < pivot) && (l < end)) l++; while((array[r] > pivot) && (r > anf)) r--; if (l <= r) { tmp = array[l]; array[l] = array[r]; array[r] = tmp; l++; r--; } }while(l <= r); if(anf < r) quicksort(array,anf,r); if(l < end) quicksort(array,l,end); rekur_counter--; ausgabe_bereich(array,rekur_counter,end,pivot); } void ausgabe(int array[], int max) { cout<<"sort: "; for (int i=1; i <= max; i++) cout<<" "<<array[i]; cout<<"\n"; } int main(int argc, char *argv[]) { int max=argc-1,z,i,j; int array[max]; for (i=1;i<=max;i++) { //j=i+1; z=atoi(argv[i]); array[i]=z; } quicksort(array, 0, max); //ausgabe(array, max); cout<<" unsort: "; for(i=1;i<=max;i++) cout<<" "<<argv[i]; //ausgabe der unsort zahlen return 0; }
-
Jedes mal wenn etwas getauscht wird,
if (l <= r) { tmp = array[l]; array[l] = array[r]; array[r] = tmp; l++; r--; }
soll der aktuelle Bereich ausgegeben werden.
*winkmitdemzaunpfahl*