Kleine C Frage

  • Hallo zusammen!
    Mach gerade eine Ausbildung zum Programmierer und hab heute eine Aufgabe gestellt bekommen. Wir haben gestern mit den Zeigern angefangen und sollen folgendes machen:

    void main( )
    {
    int feld[20];

    int i,h,getauscht;


    for ( i=0 ; i<19 ; i++)
    {
    feld[i] = random(100)+1;
    }
    do
    {
    getauscht=0;
    for (i=0;i<=18;i++)
    {
    if (feld[i]> feld[i+1])
    {
    getauscht = 1;
    h=feld[i];
    feld[i]=feld[i+1];
    feld[i+1]=h;
    }
    }
    } while(getauscht);

    }

    Alle Felder sollen wir nun durch Pointer ersetzen.
    Wer kann mir helfen?
    Bin bisher so weit gekommen:

    void main( )
    {
    int feld[20];

    int *ptr;
    int *pz;
    int *tausch;

    int bubbel;
    int i;
    int getauscht;


    ptr=&feld[20];

    pz=&i;

    tausch=&getauscht;


    for ( *pz=0 ; *pz<19 ; *pz++)
    {
    *ptr = random(100)+1;
    }
    do
    {
    *tausch=0;
    for (*pz=0;*pz<=18;*pz++)
    {
    if (*ptr>*ptr+1)
    {
    *tausch = 1;
    bubbel = *ptr;
    *ptr=(*ptr+1);
    (*ptr+1) = bubbel;
    }
    }
    } while(*tausch);

    }

    Danke!

    • Es gibt Code-Tags. Es gibt sie aus einem bestimmten Grund, nämlich zum einigermaßen lesbaren Posten von Code.
    • Einiges von dem hilft dir vielleicht: http://www.catb.org/~esr/faqs/smart-questions.html . Insbesondere wäre es rasend interessant zu wissen, was du von uns willst. Kompiliert dein Code? Wenn nicht, zeig die Fehlermeldungen her. Rennt er, aber tut er was falsches? Beschreib uns, was er tut und was er tun sollte.
    • void main gibt's nicht, das heißt int main. Dein Programmierkurs stinkt, du solltest wohl einen neuen suchen.
    • ptr=&feld[20]; ist ziemlich sicher nicht das, was du wolltest. Diese Zuweisung setzt ptr als Zeiger auf das (nicht existente) zwanzigste Element von feld! Du meinst ptr = &feld[0]; oder weniger konfus einfach ptr = feld;

    *plantsch*

  • Vielen Dank für eure Hilfe. War für heute gut gerüstet ;)
    Das mein Programmierkurs nicht das wahre ist, hab ich auch schon festellen müssen.
    Habe nicht mehr bekommen wie den Quellcode mit der Feldschreibweise feld[20] usw. und dann folgende Aufgabe:"Ersetzen sie alle Felder durch Pointer".
    Deinen Rat mit den Code-Tags nehme ich dankend an.
    Wäre aber nett, wenn du mir erklären könntest w der Unterschied zwischen void main() und main() alleine steht.
    Thx

  • Zitat von Synox

    Wäre aber nett, wenn du mir erklären könntest w der Unterschied zwischen void main() und main() alleine steht.


    Das void steht für den Rückgabewert. C Programme sollten allerdings immer einen Rückgabewert des Typs int liefern. Dadurch kann überprüft werden, ob ein Programm erfolgreich ausgeführt wurde oder durch einen Fehler abgebrochen wurde.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!