Brauche dringend Hilfe mit Pointern



  • Hallo,
    ich soll ein Programm schreiben, dass 5 Vornamen einliest und dann alphabetisch sortiert wieder ausgibt. Das ganze soll über Pointer realisiert werden. Über Groß-/Kleinschreibung und Umlaute sollen wir uns keine Gedanken machen.

    Erstmal muss noch gesagt werden, dass ich das mit den Pointern überhaupt nicht verstehe, d.h. mein Code ist aus verschiedensten Quellen mehr oder weniger zusammen gemurkst und ich verstehe die Hälfte davon nicht.
    Zumindest hab ichs jetzt soweit, dass der Compiler keine Fehler mehr bringt 🙂 Allerdings kann ich nur 2 Eingaben machen.

    # include <iostream>
    using namespace std;
    
    void BubbleSort(char [], char ptrvn1, char ptrvn2, char ptrvn3, char ptrvn4, char ptrvn5)
    {
    char array[5]={ptrvn1, ptrvn2, ptrvn3, ptrvn4, ptrvn5};
    
    for(char i=0; i<9; i++)
    for(char j=0; j<i; j++)
    if(array[i]<array[j])
    {
    char temp = array[j];
    array[j]= array[i];
    array[i]=temp;
    }
    for(char i=0; i<9;i++);
    }
    void main ()
    {
    cout<<endl<<endl<<"Dieses Programm gibt 5 vorher eingegebene Vornamen alphabetisch geordnet aus."<<endl<<endl
    <<"Bitte geben Sie fuenf Vornamen ein:"<<endl;
    
    char ptrvn1, ptrvn2, ptrvn3, ptrvn4, ptrvn5;
    char array [5];
    char i=0;
    
    cin>>ptrvn1; cin>>ptrvn2; cin>>ptrvn3; cin>>ptrvn4; cin>>ptrvn5;
    
    cout<<"Die Namen alphabetisch geordnet sind:"<<array[i]<<endl;
    system ("pause");
    }
    

    Bin für jede Hilfe dankbar; da ich aber unter Zeitdruck stehe wäre mir ein funktionfähiges Programm am liebsten, drüber nachdenken kann ich später auch noch. 🙂

    Keaira



  • WTF? Das sieht wirklich zusammenkopiert aus.

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    int main()
    {
        string names[5];
        for(int i = 0; i < 5; ++i)
        {
            cout << i << ". Namen eingeben: ";
            cin >> names[i];
        }
    
        sort(names[0], names[4]);
    
        for(int i = 0; i < 5; ++i)
        {
            cout << names[i];
        }
    }
    


  • Hmm, das sieht so einfach aus, dass sogar ich es auf Anhieb verstehe. 🙂
    Aber da sind keine Pointer drin. Ich hab den Tipp bekommen, es mit Bubblesort zu versuchen, deshalb dieses seltsame Chaos. Aber bubble sieht ja bei jeden irgendwie anders aus.
    Kann man deinen Code auf Zeiger umbauen und wie? Ich kapier das mit den Zeigern halt nicht, wann brauch ich *, wann & oder wann gar nichts?

    Keaira



  • Keaira schrieb:

    Hallo,
    ich soll ein Programm schreiben, dass 5 Vornamen einliest und dann alphabetisch sortiert wieder ausgibt. Das ganze soll über Pointer realisiert werden. Über Groß-/Kleinschreibung und Umlaute sollen wir uns keine Gedanken machen.

    Erstmal muss noch gesagt werden, dass ich das mit den Pointern überhaupt nicht verstehe, d.h. mein Code ist aus verschiedensten Quellen mehr oder weniger zusammen gemurkst und ich verstehe die Hälfte davon nicht.

    Das bringt dich doch nicht weiter. Versuch lieber Pointer zu verstehen:
    http://video.google.com/videoplay?docid=-3462836456663764635&q=Pointer+C



  • Keaira schrieb:

    Hmm, das sieht so einfach aus, dass sogar ich es auf Anhieb verstehe. 🙂
    Aber da sind keine Pointer drin.
    Keaira

    Hmm... Wo sind den bei deinem Programm die Pointer??

    Tipp von mir: Tutorial bezüglich Pointer lesen und verstehen und dann erst BubbleSort'n ...

    Sonst:
    & ... adress of operator (wenn du die Adresse brauchst)
    z.B.:

    x = 5;
              &x liefert die Adresse, wo x im Speicher steht, also 0x....
    

    * ... dereference operator (wenn du eine Speicheradresse speichern willst)
    z.B.:

    int *p = &x;  
              *p = 21;  // p zeigt auf die Adresse von x und gibt x den Wert 21
    

    ...
    als kleiner hinweis!



  • @ rüdiger
    Sau geiles video



  • Bei mir sind keine Zeiger mehr drin, weil ich da immer Fehler bekam... ich hatte das Array als pointer, da in der void bubblesort Zeile, da kam dann dass ich einen formalen Parameter neu deklariere oder so. Und die ptrvn's waren auch welche, da hat er gemeckert, dass sie nicht initialisiert sind.
    Da ich schon fast am aufgeben bin, wollte ich es erstmal so zum laufen bringen und mich um die Zeiger später kümmern.
    Jetzt hab ich auch noch mein VC++ geschrottet, weil er mir Fehlermeldungen von ner älteren, eigentlich deinstallierten Version brachte und ich neu installieren wollte; geht nicht.
    Ob das noch was wird heute?

    Das Video war wirklich gut. Thx.


Anmelden zum Antworten