Kann jemand mein Programm richtig machen?
-
Hallo, ich habe ein Problem! Ich hab zum Gebutztag von Mama und Papa ein Buch über C++ geschenkt gekriegt. Ich hab auch schon versucht ein Programm zu schreiben, das ich für Hausaufgabe nehmen kann, aber ich bekomm das nicht so gut hin. Papa hat mir n paar Teile aus dem Internet rausgesucht und die hab ich dann in mein Programm geschrieben, aber das macht irgendwie nichts. Langsam macht Programmieren keinen Spaß mehr und Mama und Papa helfen mir auch nicht mehr. Kann mal jemand mein Programm richtig machen damit es funktioniert? Ich weiß nicht mehr, was ich machen soll, in meinem Buch finde ich auch nix.
Das hier ist mein Program:#include <cstdlib>
#include <iostream>using namespace std;
int main(int argc, char *argv[])
{ int x;
cout<<"Herzlich Willkommen zum Projekt 'Sortierverfahren'!!!\n\nSie haben jetzt die Wahl sich \nfuer ein Sortierverfahren ihrer Wahl zu entscheiden.\n\n 1 = Bubblesort\n 2 = Quicksort\n 3 = Heapsort\n\nIhre Eingabe bitte: \n\n";
cin>>x;if (x==1)
{ void bubblesort(int *ptr, int n)
{
for (int i = 1; i <= n-1; ++i)
for (int j = 0; j < n-i; ++j)
if (ptr[j] > ptr[j+1])
{
int temp = ptr[j];
ptr[j] = ptr[j+1];
ptr[j+1] = temp;
}
}
}if (x==2)
{void quicksort(int *array, int links, int rechts)
{
int pivot, temp;
int l, r;if (links < rechts)
{
l = links; r = rechts;pivot = array[(links+rechts) >> 1];
do
{
while (array[l] < pivot) l++;
while (array[r] > pivot) r--;if (l <= r)
{
temp = array[r]; array[r] = array[l]; array[l] = temp;l++; r--;
}
}
while (l <= r);quicksort(array, links, r);
quicksort(array, l, rechts);
}
}
if (x==3)
{void quicksort(int *array, int links, int rechts)
{
int pivot, temp;
int l, r;if (links < rechts)
{
l = links; r = rechts;pivot = array[(links+rechts) >> 1];
do
{
while (array[l] < pivot) l++;
while (array[r] > pivot) r--;if (l <= r)
{
temp = array[r]; array[r] = array[l]; array[l] = temp;l++; r--;
}
}
while (l <= r);quicksort(array, links, r);
quicksort(array, l, rechts);
}
}system("PAUSE");
return EXIT_SUCCESS;
}Were toll wenn mir jemand sagt wie das geht, bitte so schnell wie möglich, weil ich Mondag wieder zur Schule muss und da habe ich dann sowiso keine Zeit mehr.
Martin95
-
du kannst nicht deine Funktionen in einer anderen FUnktion definieren ... muss de da rausnehmen ... und sonnst habsch noch net nachgeguckt was alles falsch ist ^^
-
Du kannst es ja im "Projekte"-Forum posten... da wird sich sicher jemand finder der es gegen Geld macht.
-
ist das tatsächlich ernst gemeint oder nur mal wieder irgendein troll?
diese "mama und papa haben für mich ... gemacht"-phrasen machen doch den eindruck, dass da mal wieder einer zu viel freizeit und zu wenig hobbys hat und sich zum spaß in foren anmeldet um die vollzuspammen....sollte das wirklich nicht der fall sein, nicht persönich nemhen und vielleicht nicht papa den code suchen lassen und einfach kopieren/abtippen, sondern auf grundlage dessen, was du schon aus deinem buch gelernt hast, eingene kleine programme schreiben. dann weisst du ws du machst und wo du eventuell nach fehlern suchen musst. wenn du dann an einer stelle nicht weiterkommst, frag hier nach und beschreibe dein problem so genau wie möglich, dann wird dir geholfen.
den kopierten code zusammenzuklatschen und hier korrigieren lassen ist wohl für umsonst nicht drin.
also entweder selbst denken oder jochens vorschlag....andernfalls, nimm es bitte persönlich
btw: ohne cpp-tags wird sich der grossteil der leute hier den code swahrscheinlich nicht durchlsesen.
mfg,
julian
-
is das denn schon ein bisschen richtig? oder is das alles falsch? ich meine, bin ich nah dran oder soll ich das alles besser nochmal neu machen?
-
Wenn ich ne IDE vor mir hab stell ichs dir richtig ... hab ich im Moment aber nicht und da du keine Code-Tags verwendet hast ist der Code so nicht lesbar ...
-
das wäre toll! was sind denn code-tags?
-
Ich weiss zwar nicht warum, aber ich habe mal 30 Minuten inverstiert und es kam folgendes bei raus:
#include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int x; cout<<"Herzlich Willkommen zum Projekt 'Sortierverfahren'!!!\n\nSie haben jetzt die Wahl sich \nfuer ein Sortierverfahren ihrer Wahl zu entscheiden.\n\n 1 = Bubblesort\n 2 = Quicksort\n 3 = Heapsort\n\nIhre Eingabe bitte: \n\n"; cin>>x; if (x==1) { void bubblesort(int *ptr, int n) { for (int i = 1; i <= n-1; ++i) for (int j = 0; j < n-i; ++j) if (ptr[j] > ptr[j+1]) { int temp = ptr[j]; ptr[j] = ptr[j+1]; ptr[j+1] = temp; } } } if (x==2) { void quicksort(int *array, int links, int rechts) { int pivot, temp; int l, r; if (links < rechts) { l = links; r = rechts; pivot = array[(links+rechts) >> 1]; do { while (array[l] < pivot) l++; while (array[r] > pivot) r--; if (l <= r) { temp = array[r]; array[r] = array[l]; array[l] = temp; l++; r--; } } while (l <= r); quicksort(array, links, r); quicksort(array, l, rechts); } } } // ==> Die hat gefehlt !!! if (x==3) { void quicksort(int *array, int links, int rechts) { int pivot, temp; int l, r; if (links < rechts) { l = links; r = rechts; pivot = array[(links+rechts) >> 1]; do { while (array[l] < pivot) l++; while (array[r] > pivot) r--; if (l <= r) { temp = array[r]; array[r] = array[l]; array[l] = temp; l++; r--; } } while (l <= r); quicksort(array, links, r); quicksort(array, l, rechts); } } } // ==> Die hat auch gefehlt !!! system("PAUSE"); return EXIT_SUCCESS; }
Zunächst mal fehlt eine grundlegende Sache, nämlich die fehlenden } Ende (siehe Kommentare). Das lasse ich fast noch als Kopierfehler durchgehen
.
Nun aber doch eher die grundlegende Frage: Was soll das ??
Wo hast Du die Code-Brocken zusammengesammelt, und mit welchem Compiler zu übersetzen versucht (wenn überhaupt)?
Das sollte eigentlich keiner übersetzen wollen, denn wie (D)Evil ja schon vermerkt hat:
error C2601: 'bubblesort' : local function definitions are illegal error C2601: 'quicksort' : local function definitions are illegal
Genau so sagt es zumindest die englische Version des VC6.
So habe ich aus dem Code oben das folgende gemacht (nur "auschneiden" und "einfügen"):
int main(int argc, char *argv[]) { int x; cout<<"Herzlich Willkommen zum Projekt 'Sortierverfahren'!!!\n\nSie haben jetzt die Wahl sich \nfuer ein Sortierverfahren ihrer Wahl zu entscheiden.\n\n 1 = Bubblesort\n 2 = Quicksort\n 3 = Heapsort\n\nIhre Eingabe bitte: \n\n"; cin>>x; if (x==1) { // => Rausgezogen !!! } if (x==2) { // => Rausgezogen !!! } // ==> Die hat gefehlt !!! if (x==3) { // => Rausgezogen !!! } // ==> Die hat auch gefehlt !!! system("PAUSE"); return EXIT_SUCCESS; } void bubblesort(int *ptr, int n) { for (int i = 1; i <= n-1; ++i) for (int j = 0; j < n-i; ++j) if (ptr[j] > ptr[j+1]) { int temp = ptr[j]; ptr[j] = ptr[j+1]; ptr[j+1] = temp; } } void quicksort(int *array, int links, int rechts) { int pivot, temp; int l, r; if (links < rechts) { l = links; r = rechts; pivot = array[(links+rechts) >> 1]; do { while (array[l] < pivot) l++; while (array[r] > pivot) r--; if (l <= r) { temp = array[r]; array[r] = array[l]; array[l] = temp; l++; r--; } } while (l <= r); quicksort(array, links, r); quicksort(array, l, rechts); } } void quicksort(int *array, int links, int rechts) { int pivot, temp; int l, r; if (links < rechts) { l = links; r = rechts; pivot = array[(links+rechts) >> 1]; do { while (array[l] < pivot) l++; while (array[r] > pivot) r--; if (l <= r) { temp = array[r]; array[r] = array[l]; array[l] = temp; l++; r--; } } while (l <= r); quicksort(array, links, r); quicksort(array, l, rechts); } }
Und was sagt dann mein Compiler:
error C2084: function 'void __cdecl quicksort(int *,int,int)' already has a body
Sowas aber auch! Nun ja, zweimal die selbe Implementierung hintereinander mag er halt auch nicht
.
Also habe ich das Daraus gemacht (nur markieren und löschen):
int main(int argc, char *argv[]) { int x; cout<<"Herzlich Willkommen zum Projekt 'Sortierverfahren'!!!\n\nSie haben jetzt die Wahl sich \nfuer ein Sortierverfahren ihrer Wahl zu entscheiden.\n\n 1 = Bubblesort\n 2 = Quicksort\n 3 = Heapsort\n\nIhre Eingabe bitte: \n\n"; cin>>x; if (x==1) { // => Rausgezogen !!! } if (x==2) { // => Rausgezogen !!! } // ==> Die hat gefehlt !!! if (x==3) { // => Rausgezogen !!! } // ==> Die hat auch gefehlt !!! system("PAUSE"); return EXIT_SUCCESS; } void bubblesort(int *ptr, int n) { for (int i = 1; i <= n-1; ++i) for (int j = 0; j < n-i; ++j) if (ptr[j] > ptr[j+1]) { int temp = ptr[j]; ptr[j] = ptr[j+1]; ptr[j+1] = temp; } } void quicksort(int *array, int links, int rechts) { int pivot, temp; int l, r; if (links < rechts) { l = links; r = rechts; pivot = array[(links+rechts) >> 1]; do { while (array[l] < pivot) l++; while (array[r] > pivot) r--; if (l <= r) { temp = array[r]; array[r] = array[l]; array[l] = temp; l++; r--; } } while (l <= r); quicksort(array, links, r); quicksort(array, l, rechts); } }
Und siehe da, Ich kann compillieren + linken, bekomme eine EXE, und die läuft auch noch. Nur, machen tut das programm eigentlich nix, ausser
Herzlich Willkommen zum Projekt 'Sortierverfahren'!!! Sie haben jetzt die Wahl sich fuer ein Sortierverfahren ihrer Wahl zu entscheiden. 1 = Bubblesort 2 = Quicksort 3 = Heapsort Ihre Eingabe bitte:
von sich zu geben, was von der Tastatur zu lesen und nach "Eingabe" zu enden
.
Nun, Kann jemand mein Programm richtig machen? ist ein witziger Titel, aber wenn es "richtig gemacht" ist tut es auch noch nix. Und nun?
Gruss, Gio
PS: Bist Du nun der "Troll mit zu viel Freizeit", oder wirklich ein blutiger Anfänger, der das wirklich ernst meint?
Ich hoffe nun mal, Du bist wirklich der blutige Anfänger
.
-
Hmm na da brauch ichs net machen ... thx ^^ Hmm .. solltest dann x in ne switch setzen ... und beim case dann die jeweilige Funktion aufrufen ...
-
@(D)Evil
Ob da jetzt eine switch/case oder sonstwas machbar wäre, steht meines Erachtens im Moment nicht zur Debatte.
Die letztendliche Frage "Und nun?" war von meiner Seite nicht ans Forum, sondern an martin95 gerichtet. Er ist jetzt am Zug ...
Ich will Dir da jetzt sicher nicht auf die Füsse treten, aber wie man was machen kann, das erst, so zumindest meine Meinung, nach einer Info von martin95.Gruss, Gio
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Sieht für mich nicht nach Troll aus, sondern eher nach recht jungem Programmieranfänger (dem Namen nach 11 oder 12). Und je früher man anfängt desto besser, eigentlich.
@Martin95: Such in deinem Buch (welches ist das überhaupt) mal nach "Funktionen" und sieh dir an wie sie funktionnieren. Alternativ kannst du auch auf einem der Onlinetutorials wie z.B www.volkard.de nachschauen (oder sie ganz durcharbeiten)
Und ich hoffe ja mal, dass du die Flinte nicht so schnell ins Korn wirfst, Geduld brauchst du schon. wenn die Grundlagen und das "richtige" Denken erstmal sitzen gehts auch schneller, aber dafür musst du dir schon Zeit nehmen.
-
...oder das hier
-
warum sind jetzt eigentlich alle sauer? vielleicht hab ich ja zu viel freizeit, aber wenn ich mich nunmal mit programmieren beschäftigen will...von euch haben doch sicher auch viele in jungen Jahren angefangen, ihr habt euch doch auch nicht erst mit 16/17 Jahren zum ersten mal mit Computern beschäftigt oder? Ok, vielleicht weiß ich noch nicht so viel aber ihr habts doch auch nicht von heute zu morgen gelernt. Wenn ich später mal eine Arbeit habe kann ich dann vielleicht Windows Wista 2 entwickeln.
egal, VIELEN DANK FÜR EURE HILFE, wenn Papa nachher Zeit hat, können wir das gleich reinschreiben. DANKE.
-
Man Schreibt es Windows VISTA!!!!!!!!!!!!!!!!!!
:p
-
martin95 schrieb:
warum sind jetzt eigentlich alle sauer? vielleicht hab ich ja zu viel freizeit, aber wenn ich mich nunmal mit programmieren beschäftigen will...von euch haben doch sicher auch viele in jungen Jahren angefangen, ihr habt euch doch auch nicht erst mit 16/17 Jahren zum ersten mal mit Computern beschäftigt oder? Ok, vielleicht weiß ich noch nicht so viel aber ihr habts doch auch nicht von heute zu morgen gelernt. Wenn ich später mal eine Arbeit habe kann ich dann vielleicht Windows Wista 2 entwickeln.
egal, VIELEN DANK FÜR EURE HILFE, wenn Papa nachher Zeit hat, können wir das gleich reinschreiben. DANKE.
ich bin nicht sauer, das sah nur wirklich nach nem troll aus, solche leute, die sich in nem programmier-forum anmelden und dann sachen schreiben wie "meine mami hat mir den pc angemacht und jetzt bekomm ich ihn nicht mehr aus.". aber wie gesagt, wenns nicht so ist, nicht auf dich persönlich beziehen.
und es ist auf jeden fall nicht negativ, wenn du dich früh mit dem programmieren beschäftigst. ich hab auch mit ungefähr 13 (plus minus 1 jahr) angefangen (und bin jetzt mit 16 immernoch blutiger anfänger). nur sollte man nicht den ganzen tag nur im keller hocken und vorm pc vergammeln.
in diesem sinne ... viel spass beim eifrigen lesen und lernen.
mfg,
julian
-
Also, das gehört eigentlich nun gar nicht ins Forum, aber ich muss es loswerden.
warum sind jetzt eigentlich alle sauer? vielleicht hab ich ja zu viel freizeit, aber wenn ich mich nunmal mit programmieren beschäftigen will...von euch haben doch sicher auch viele in jungen Jahren angefangen, ihr habt euch doch auch nicht erst mit 16/17 Jahren zum ersten mal mit Computern beschäftigt oder? ….
Nun, dass es so herüberkommen mag, dass alle „sauer sind“, mag damit zusammenhängen, dass hier nicht unbedingt das Forum für die „blutigen“ Anfänger ist, die erst mal herausbekommen wollen, was C/C++ ist (und ihre allerersten Codezeilen zum Besten geben
). Ich war zum Zeitpunkt meiner Antwort eigentlich auch fast sicher, dass Du so zwischen 12 und 15 sein musst. Shinja hat mich so im nach hinein bestätigt. Die Frage nach dem „Troll“ am Ende meines Beitrages war auch gewollt provokativ.
Und, ganz ehrlich, ich habe mit 16/17 eher Tanzveranstaltungen, Jugendzentrum und sonst was (
) im Kopf gehabt. Aber Computer? Nöööö!
Ich habe den ersten „richtigen“ Kontakt zu diesen Dingern erst während meines Studiums bekommen. Da habe ich dann während meines 2. Praxissemesters C-Programmieren gelernt. Das ist nun schon eine ganze Weile her ;). Nun verdiene ich mit meinen 42 immerhin schon seit 15 Jahren meine Brötchen mit „Programmieren“ (wenn ich jetzt pingelig wäre würde ich sagen "Software-Entwicklung").
Nun noch dicker: ich habe drei Kinder (8,10,12 Jahre alt), aber ich jage die allesamt raus (so richtig ins Freie auf die Wiese!) zum Spielen, Inlinerfahren, .... aber "Programmieren" wollen die in ihrem Alter zum Glück nicht
. Sie spielen das ein oder andere Spiel am PC(Olchis, Löwenzahn oder ein Schachspiel) was für Dich vielleicht fremd sein mag, aber jeder hat nur 30 min, dann ist Ende
.
Für die Schule kommt immer mal was, Referat, Buchvorstellung, auch das machen sie am PC (Textverarbeitung), und Internet ist zum suchen für z.B. "Wespen" auch erlaubt, aber das war es schon. Und ich behaupte ganz frech, meine Kinder sind nicht unglücklich.
Die allerletzte Frage, ist Dein Papa ein Programmierer (oder so was ähnliches)?
Gruss, Gio
PS: Geht an das "C/C++ Forum" direkt. Sollte nicht wenigstens das Geburtsjahr bei Anmeldung erforderlich sein? Das fände ich, speziell in diesem "Martin95" Fall gar nicht so schlecht.
-
Naja, das ist jetzt deine Meinung, und ich muss auch ehrlich sagen, dass iche s klasse fidne wenn man seine Kinder oft raus schickt und so weiter. Aber Programmieren lernen heißt nicht unbedingt, dass man nach der Schule sofort den PC anmacht und dann bis 8 Uhr da sitzt (oder bis wann es eben erlaubt ist) und dann schlafen geht. Wenn er am Tag 1 Stunde am PC verbringt halte ich das nicht für übertrieben und wenn man zu der Zeit eben programmiert und nicht ein PC-Spiel spielt (wobei ich sagen muss dass Löwenzahn u.ä Spiele sehr gut sind) ist das doch auch in Ordnung. Ich denke sogar dass früher Programmieren einen guten pädagogischen Effekt hat, man lernt eine neue "Denkweise" kennen. Und imho: je mehr verschiedene Denkweisen man anwenden kann, desto besser. Man lernt logischer denken, im voraus planen usw. (wobei die alten Brettspiele wie Schach, Mühle und Dame oder so da auch nicht schlecht sind!)
Von daher, da man nicht kontrollieren kann wie lange ein Forumsmitglied täglich vor dem PC sitzt, würde ich eine Alterbeschränkung (die man durch ne kleine falsche Angabe locker umgehen kann) stimmen. Und ich denke mal einfach, dass mri da noch eine ganze Reihe Leute zustimmen würden.
Sollte diese Diskussion weitergehen würd ichs gut finden wenn das in einem Thread wäre. Ist ja eigentlich alles OT und vielleicht hat Martin95 noch weitere Fragen zu seinem Programm.
-
Hallo, tut mir leid das ich mich lange nicht mehr gemeldet hab, aber ich war am Wochenende bei meiner Oma und da hab ich kein Internet. Und macht euch keine sorgen, ich spiele auch Fussball und fahre Fahrrad.
@Gio: Nein ist er nicht, er wollte sowas eigentlich studieren, aber das war ihm dann zu schwer. Dann hat er aufgehört.
Wie kann ich das denn jetzt mit dem Programm anwenden. Ich habe noch eine neue Sortierung reingemacht. Kann ich das auch so machen, das ich das Alphabet da in die Programme mache? Irgendwie hab ich keine richtige Idee wie ich die Aufrufen soll. Es sind auch noch kleine Fehler in dem Programm, aber das ist nicht so schlimm. Aber wie kann ich das machen?
Soweit ist das jetzt erstaml:
#include <cstdlib>
#include <iostream>int main(int argc, char *argv[])
{
int x;
cout<<"Herzlich Willkommen zum Projekt 'Sortierverfahren'!!!\n\nSie haben jetzt die Wahl sich \nfuer ein Sortierverfahren ihrer Wahl zu entscheiden.\n\n 1 = Bubblesort\n 2 = Quicksort\n 3 = Selection Sort\n\nIhre Eingabe bitte: \n\n";
cin>>x;//Durchführung von Bubblesort:
if (x==1)
{
void bubblesort(int *ptr, int n)
{
for (int i = 1; i <= n-1; ++i)
for (int j = 0; j < n-i; ++j)
if (ptr[j] > ptr[j+1])
{
int temp = ptr[j];
ptr[j] = ptr[j+1];
ptr[j+1] = temp;
}
}
}if (x==2)
{//Durchführung von Quicksort:
void quicksort(int *array, int links, int rechts)
{
int pivot, temp;
int l, r;if (links < rechts)
{
l = links; r = rechts;pivot = array[(links+rechts) >> 1];
do
{
while (array[l] < pivot) l++;
while (array[r] > pivot) r--;if (l <= r)
{
temp = array[r]; array[r] = array[l]; array[l] = temp;l++; r--;
}
}
while (l <= r);quicksort(array, links, r);
quicksort(array, l, rechts);
}
}
}if (x==3)
{void InsertionSort(int *ptr, int n);
int main()
{
const int Nummer = 10;
int nums[Nummer] = {a,b,c,d,e,f,g,h,i,j};
cin>>
int y, z;z = SelectionSort(nums, Nummer);
cout << "Ihre Ausgabe:\n";
for (y = 0; y < NUMEL; y++)
cout << " " << nums[y];return 0;
}int SelectionSort(int num[], int numel)
{
int y, z, min, minidx, grade, moves = 0;for ( y = 0; y < (numel - 1); y++)
{
min = num[y]; // Erstes Minimum
minidx = y; // Anzeige der Elemente
for(z = y + 1; z < numel; z++)
{
if (num[z] < min) // Neues Minimum!
{ // Übernehmen!
min = num[z];
minidx = z;
}
}
if (min < num[y]) // Neues Minimum
{
grade = num[y];
num[y] = min;
num[minidx] = grade;
moves++;
}
}return moves;
}}
system("PAUSE");
return EXIT_SUCCESS;
}
-
bitte, bitte, bitte, editieren und CPP-tags (unten auf "C/C++" klicken->code einfügen->nochmal auf "*C/C++" klicken). so tun die augen weh wenn man das liest und die formatierung ist auch futsch.
mfg,
julian