Kann jemand mein Programm richtig machen?



  • 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



  • 1. Dein Programm kann nur eine "main" haben.
    2. cout und cin usw befinden sich im Namespace std. D.h. muss es std::cout anstelle von cout und std::cin anstelle von cin heißen.
    3. Ich hab die Sortieralgorithmenimplementierungen jetzt mal nicht überprüft. Wenn die Implementierungen allerdings korrekt sind, dann weiß ich nicht wie du die auf die Reihe bekommen hast, aber noch nicht sowas wie dekleration und definition kennst. Und sowas wie das der Compiler wenigstens die dekleration deiner Funktion haben muss, damit du sie aus einer anderen Funktion aufrufen kannst.(Also das der boublesort nat. vor main kennen muss damit du die func. darin aufrufen kannst)
    4. std::system("pause") ... gibt es nicht -.- Bzw. schon aber so macht man das nicht, wenn man es sauber haben will ...
    5. Benutz bitte einmal, wenn du hier deinen Code postest, die [ c p p ] und [ / c p p ] - Tags ... dadurch sieht dein Code direkt viel leserlicher aus 😉



  • Hi,

    Respekt wie tapfer du dich da schlägst mit deinem Alter 👍
    Ich hätte da noch einen Tipp für dich: Benutze bitte, wenn du zukünftlich Code postest, die sog. "Code - Tags". Dadurch wird die Lesbarkeit deines Codes wesentlich erhöht. Zudem sehe ich keine Einrückungen, korrigiere es das nächste mal. Ich hab den Code zumindest mal in Codetags gefasst:

    #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; 
    }
    

    So, schon viel besser 😉

    MfG mikey.

    EDIT:

    @ (D)Evil:

    5. Benutz bitte einmal, wenn du hier deinen Code postest, die [ c p p ] und [ / c p p ] - Tags ... dadurch sieht dein Code direkt viel leserlicher aus

    [ DONE ] 😉 Du warst schneller.



  • Entschuldigung, wusste ich nicht.

    #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; 
    }
    


  • OMG 😮
    Erstens ist jetzt die ganze Seite total breit, und zweitens habe ich den Code schon gepostet.

    Aber kein Problem, das lernt mal jeder. ...

    [EDIT] Troll ? *grübel*
    [EDIT] Was bist du um die Zeit noch wach ?! 💡 ➡ Trollverdacht.



  • Warum ich noch wach bin? Ich gucke grade Lost, hab bisher fast keine Folge verpasst. Meine Eltern schlafen schon.



  • Mhh...

    Welche Eltern lassen 12 jaehrige Kinder jetzt noch wach?

    Meine Eltern haetten mich damals ins Bett gejagt 😃 .

    Naja, wiedem auch sei .. wenn du wirklich erst 12(?) bist, dann
    muss ich sagen, dass ich das echt suess finde 🙂 .

    Wenn nicht dann finde ich es eine ziehmliche Unverschaemtheit,
    es gibt Menschen die haben auch besseres zu tun als sich Ellenlangen,
    unformatierten Code anzugucken 🙄 .



  • Du solltest dir wirklich mal eines der Online Tutorials ansehen, wie ich es gesagt hab (wie eben www.volkard.de o.ae.)

    Ansonsten:

    #include <iostream>
    using namespace std; //verwende das hier erstmal, dann musst du vor cout, cin usw. kein std:: schreiben
    
    //Ich gehe davon aus, dass du die Algorithmen einfach kopiert hast. Ich kopier sie also auch einfach mal, sehe mir jetzt nicht durch ob die so funktionnieren
    
    //Alle Funktionen, wie man das nennt, VOR die main() Muss nicht immer so sein, aber mach es fuer den Anfang mal so
    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); 
        } 
    } 
    
    // ich nehme jetzt nur mal die beiden, die andern beiden auch einfach hierhin stellen
    
    int main()  //die beiden parameter brauchen wir hier erstmal nicht. main() darf es im programm nur 1x geben!
    {
        cout<<"Druecken sie 1 fuer bubblesort oder 2 fuer Quicksort: "
        int auswahl;
        cin>>auswahl;
        int zahlen[10]={67,4,1,8,3,4,9,10,45,-3}; //Das hier ist einfach ein Array aus 10 Zahlen, da das Programm nur als Beispiel dienen soll
        if(auswahl==1) 
            bubblesort(zahlen,10); //Hier rufe ich nun die Funtkion bubblesort, die wir oben definiert haben, auf und gebe ihr die entsprechenden parameter.
        else if(auswahl==2)
            quicksort(zahlen,0,9); //Wieder ein funktionsaufruf, diesmal von der oben definierten Funktion quicksort.
        else
            cout<<"Ungueltige Eingabe!";
        cin.get()
        return 0;
    }
    

    So, das sollte jetzt so funktionnieren, wenn ich mich nirgendwo geirrt habe (kann natuerlich gut sein). Lies dir bitte die kommentare kurz durch.

    Und nochmal zur Erklaerung: bubblsort und quicksort sind Funtkionen. Diese "definieren" wir, das heisst wir sagen ihnen, was sie machen sollen, vor der main(). Die main() ist der Haupttteil deines Programmes, dort "startet" das Programm sozusagen. In der main rufen wir dann die Funtkionen bubblesort und quicksort auf.
    Fuer genaueres zu Funktionen solltest du entweder dein Buch aufschlagen oder wie ich jetzt schon 2x sagte, dir ein Online-Tutorial zu C++ (=eine Inetrnetseite auf der ein kurs fuer C++ steht) ansehen.



  • Hallo ich bin wieder da! Ich war im Ski-Lager, konnte aber kein Ski fahren, weil kein Schnee lag. Das war ziemlich doof, aber ansonsten war es cool. Ich hab mir auch das Tutorial angeschaut, aber das hat mir nicht so richtig geholfen. Ich glaube ich fange lieber mit ein paar kleinen Programmen an. Ich will das nur noch fertig machen, weil es doof wäre alles jetzt einfach liegen zu lassen. Ich hab das jetzt mal verändert. So hab ich es mir ungefähr vorgestellt:

    #include <iostream> 
    using namespace std; 
    
    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 SelectionSort(int num, int numel) 
         { 
          int y, z, min, minidx, grade, moves = 0; 
    
          for ( y = 0; y < (numel - 1); y++) 
          { 
           min = num[y]; 
    
           minidx = y; 
    
           for(z = y + 1; z < numel; z++) 
           { 
            if (num[z] < min) 
    
            { 
    
             min = num[z]; 
             minidx = z; 
             } 
           } 
         if (min < num[y]) 
    
         { 
        grade = num[y]; 
        num[y] = min; 
        num[minidx] = grade; 
        moves++; 
       } 
      } 
    
      return moves; 
     } 
    }
    
    int main()   
    { 
        cout<<"Herrzlich Willkommen zum Programm 'Sortierverfahren'!\n\nSie haben nun die Auswahl zischen den Verfahren\n 1 = Bubblesort\n 2 = Quicksort\n 3 = Selection Sort\n\nBitte wählen sie nun das Programm ihrer Wahl, durch die Eingabe der entsprechenden Zahl!\n\nIhre Eingabe: " 
        int auswahl,x,y; 
        cin>>auswahl;
        cout<<"Wie lang ist das zu bearbeitende Wort?\n\nIhre Eingabe: ";
        cin>>x;
        cout<<x; 
        cout<<"Bitte die zu bearbeitenden Elemente eingeben!\n\nIhre Eingabe: ";
        cin>>y;
        cout<<y;
        int Zahlen[x]={y}; 
    
        cout<<"Wie lang ist das zu bearbeitende Wort?\n\nIhre Eingabe: ";
        cin>>x;
        cout<<x;
        if(auswahl==1) 
            bubblesort(zahlen,x); 
    
        else if(auswahl==2) 
            quicksort(zahlen,x); 
    
        else if (auswahl==2)
           selectionsort (zahlen,x); 
    
        else 
            cout<<"Ungueltige Eingabe!"; 
        cin.get() 
        return 0; 
    }
    

    Ich möchte mich bei allen für ihre bisherige Hilfe bedanken. 🙂



  • Das sieht doch schonmal garnicht so schlecht aus ... also vom Prinzip 😉

    int main()  
    {
        std::cout << "Herrzlich Willkommen zum Programm \"Sortierverfahren\"! " << std::endl;
        std::cout << "Sie haben nun die Auswahl zischen den Verfahren" << std::endl;
        std::cout << "\t1 = Bubblesort" << std::endl;
        std::cout << "\t2 = Quicksort" << std::endl;
        std::cout << "\t3 = Selection Sort" << "\n" << std::endl;
        std::cout << "Bitte wählen sie nun das Programm ihrer Wahl, durch die Eingabe der entsprechenden Zahl!" << std::endl;
        unsigned short selection = 0;
        std::cin >> selection;
    
        return 0;
    }
    

    usw ... mach das mal schön ordentlich ...



  • Soo ... damit der Thread mal zu kann ... hab alles drin bis auf eine Sache die du jetzt mal selbst machen musst ...

    #include <iostream>
    #include <string>
    #include <sstream>
    
    void bubble_sort(int*, int);
    void quick_sort(int*, int, int);
    void selection_sort(int*, int);
    
    int main()  
    {
    	std::cout << "Herrzlich Willkommen zum Programm \"Sortierverfahren\"!" << "\n" << std::endl;
    	std::cout << "Sie haben nun die Auswahl zischen den folgenden Verfahren:" << std::endl;
    	std::cout << "\t(1) Bubblesort" << std::endl;
    	std::cout << "\t(2) Quicksort" << std::endl;
    	std::cout << "\t(3) Selection Sort" << std::endl;
    	std::cout << "\t(0) Beenden" << "\n" << std::endl;
    
    	std::istringstream ss;
    	std::string string_input;
    	unsigned short selection = 0;
    
    	do {
    		std::cout << "Auswahl: " << std::flush;
    		std::getline(std::cin, string_input);
    		ss.clear();
    		ss.str(string_input);
    		ss >> selection;
    	} while (!ss || selection > 3);
    
    	if (selection == 0)
    		return 0;
    
    	std::cout << "Wie viele Elemente wollen Sie eingeben?" << std::endl;
    	unsigned short count = 0;
    	do {
    		std::getline(std::cin, string_input);
    		ss.clear();
    		ss.str(string_input);
    		ss >> count;
    	} while (!ss || count == 0);
    
    	int* items_array = new int[count];
    
    	for (unsigned short entered = 0; entered < count; ++entered)
    	{
    		do {
    			std::cout << (entered + 1) << ": " << std::flush;
    			std::getline(std::cin, string_input);
    			ss.clear();
    			ss.str(string_input);
    			ss >> items_array[entered];
    		} while (!ss || count == 0);
    	}
    
    	switch (selection) 
    	{
    	case 1:
    		{
    			bubble_sort(items_array, count);
    		}break;
    	case 2:
    		{
    
    		}break;
    	case 3:
    		{
    			selection_sort(items_array, count);
    		}break;
    	}
    
    	for (unsigned short n = 0; n < count; ++n)
    		std::cout << items_array[n] << std::endl;
    
    	delete [] items_array;
    
    	return 0;
    }
    
    void bubble_sort(int* pArray, int nSize)
    {
    	for (int pass = 1; pass < nSize; ++pass) 
    	{
    		for (int i = 0; i < (nSize - pass); ++i) 
    		{
    			if (pArray[i] > pArray[i + 1]) 
    			{
    				int value_tmp	= pArray[i]; 
    				pArray[i]			= pArray[i + 1]; 
    				pArray[i + 1]		= value_tmp;
               }
           }
       }
    }
    
    void quick_sort(int* pArray, int links, int rechts)
    {
        int pivot, temp;
        int l, r;
    
        if (links < rechts)
        {
            l = links; r = rechts;
            pivot = pArray[(links+rechts) >> 1];
    
            do
            {
                while (pArray[l] < pivot) l++;
                while (pArray[r] > pivot) r--;
    
                if (l <= r)
                {
                    temp = pArray[r]; 
    				pArray[r] = pArray[l]; 
    				pArray[l] = temp;
                    ++l; 
    				--r;
                }
            } while (l <= r);
    
            quick_sort(pArray, links, r);
            quick_sort(pArray, l, rechts);
        }
    }
    
    void selection_sort(int* pArray, int nSize)
    {
       for (int pass = 0; pass < (nSize - 1); ++pass)
       {
    		int pos_min		= pass;
    		int value_min	= pArray[pass];
    
    		for(int pos_search = (pass + 1); pos_search < nSize; ++pos_search)
    		{
    			if (pArray[pos_search] < pArray[pos_min])
    			{
    				pos_min		= pos_search;
    				value_min	= pArray[pos_search];
    			}
    		}
    		int value_tmp	= pArray[pass];
            pArray[pass]	= pArray[pos_min];
            pArray[pos_min]	= value_tmp;
       }
    }
    


  • Irgendwie merke ich immer wieder, dass das scheinbar was besonders ist früh mit dem Programmieren anzufangen. Ich habe zusammen mit nem Lebensabschnittsgefährten (auch Freund genannt) mit 9 angefangen HTML zu lernen. Mit 11 dann PHP, und seit Dez 04 CPP mit WinAPI. Dazu kommen eher schlecht Erfahrungen in Prolog, Java und JavaScript...

    Mfg Ominion



  • Irgendwie merkst du nicht, dass deine Lebensgeschichte niemanden mehr interessiert seit Seite 1


Anmelden zum Antworten