Vorlesung vom 26.05.2004

Elektrotechnik-Forum
Verfügbare Informationen zu "Vorlesung vom 26.05.2004"

  • Qualität des Beitrags: 0 Sterne
  • Beteiligte Poster: Manuel
  • Forum: Elektrotechnik-Forum
  • Forenbeschreibung: Hilfsmittel für das Studium
  • aus dem Unterforum: Programmieren
  • Antworten: 2
  • Forum gestartet am: Dienstag 18.05.2004
  • Sprache: deutsch
  • Link zum Originaltopic: Vorlesung vom 26.05.2004
  • Letzte Antwort: vor 18 Jahren, 9 Monaten, 30 Tagen, 10 Stunden, 13 Minuten
  • Alle Beiträge und Antworten zu "Vorlesung vom 26.05.2004"

    Re: Vorlesung vom 26.05.2004

    Manuel - 26.05.2004, 19:29

    Vorlesung vom 26.05.2004
    //DynIntArray-main.cpp

    //*****************************************************************************
    // Dynamisches Array
    //*****************************************************************************

    //Aufgabe:
    //Einlesen von Tastatur und Speicherung einer erst zur
    //Programm-Laufzeit bekannten Anzahl von int-Werten

    #include <stdio.h>
    #include <stdlib.h> //für malloc ...

    void main(void)
    {
    int iAnz=0,i; //Anzahl int-Zahlen
    int x; //Hilfsvariable

    int* piArr= NULL; //Zeiger auf dynamischen Speicher

    printf("Anzahl int-Zahlen?\n");
    scanf("%d",&iAnz);

    //int arr[iAnz]; //FEHLER
    piArr = (int*) malloc(iAnz*sizeof(int));

    //Test, ob Allokation erfolgreich war
    if(piArr == NULL)
    {
    printf("Fehler bei Speicherallokation\n");
    exit(1);
    }

    //Eingabe der int-Zahlen
    for(i=0;i<iAnz;i++)
    {
    //scanf("%d",&x); //Einlesen
    //piArr[i] =x; //Eingelesener Wert im dynamischen Array ablegen
    //*(piArr+i)
    //*piArr =x; piArr++;
    //*piArr++ =x;

    scanf("%d",piArr+i); //typisch C
    }

    //Testausgabe
    for(i=0;i<iAnz;i++)
    {
    printf("%d\n",piArr[i]);
    }

    free(piArr);
    }



    Re: Vorlesung vom 26.05.2004

    Manuel - 26.05.2004, 19:30


    //Demoprogramm für lineare Liste
    //Programm soll eine beliebige Anzahl von int-Zahlen,
    //--Anzahl ist zu keinem Zeitpunkt bekannt, vgl. DynInt Array
    //die über Tastatur eingelesen werden,
    //in einer linearen Liste abspeichern
    //Neue Elemnte sollen sortiert in die Liste eingefügt werden

    #include <stdio.h>
    #include <stdlib.h> //für malloc

    //Typdefinition von Zahl
    struct zahl
    {
    int x; //Nutzkomponente
    struct zahl* pNext; //Zeiger auf nächstes Element
    };
    typedef struct zahl Zahl;

    void DisplayListe(Zahl* pWurzel)
    {
    Zahl* pAkt = pWurzel; //Anfang der Liste
    //Durchlaufen der Liste von Anfang bis Ende
    while(pAkt != NULL)
    {
    printf("%d\n",pAkt->x);
    //printf("%p",pAkt);
    pAkt = pAkt->pNext; //Nächstes Element
    }
    }
    void FreeList(Zahl* pWurzel)
    {
    Zahl* pAkt = pWurzel; //Anfang der Liste
    Zahl* pLast=NULL;

    while(pAkt != NULL)
    {
    pLast = pAkt ;
    pAkt = pAkt->pNext;
    free(pLast);
    }
    }

    Zahl* InsertSorted(Zahl* pWurzel, int Wert)
    {
    Zahl* pNeu =NULL;
    Zahl* pAkt =NULL;

    //1.Speicher für ein Listenelement allokieren
    pNeu = (Zahl*) malloc(sizeof(Zahl));
    if(pNeu == NULL){
    printf("Allokationsfehler\n");
    exit(1);
    }

    //2.Eingegebene Zahl in Listelement ablegen
    pNeu->x = Wert;
    pNeu->pNext=NULL;

    //3.Listelement in Liste einfügen
    if(pWurzel == NULL) //Liste noch leer
    {
    pWurzel = pNeu;
    }
    else if(Wert < pWurzel->x ) //Element am Listanfang einfügen
    {
    pNeu->pNext = pWurzel;
    pWurzel = pNeu;
    }
    else {
    //pAkt zeigt auf Element vor Einfügestelle
    //Einfügestelle suchen
    //hinter pAkt einfügen
    pAkt=pWurzel;
    while(pAkt->pNext != NULL && //nicht Listenende
    pAkt->pNext->x < Wert )// nächster Wert < neuer Wert
    pAkt=pAkt->pNext;

    //Einfügen
    pNeu->pNext=pAkt->pNext; //Verkettung hinter neuem Element
    pAkt->pNext =pNeu; //Neues Element anhängen
    }

    return pWurzel;
    }




    int main(void)
    {
    int iWert;
    Zahl* pWurzel =NULL;

    printf("Bitte Zahlen eingeben\n");
    while(scanf("%d",&iWert) != EOF)
    {
    pWurzel = InsertSorted(pWurzel,iWert);
    }

    //Ausgabe aller Elemente der Liste
    DisplayListe(pWurzel);

    //Speicherfreigabe aller Elemente
    FreeList(pWurzel);
    return 0;
    }



    Mit folgendem Code, können Sie den Beitrag ganz bequem auf ihrer Homepage verlinken



    Weitere Beiträge aus dem Forum Elektrotechnik-Forum



    Ähnliche Beiträge wie "Vorlesung vom 26.05.2004"

    Mainz - RWE, 01.05.2004 - efu_96 (Mittwoch 21.06.2006)
    Befund vom Bluttest ist da - Schnuekje (Montag 04.09.2006)
    Horoskope vom 15.01.2006 - enfusia (Sonntag 15.01.2006)
    25.12.2004 limpbizkit4ever.de goes to Trashagent - Mike (Samstag 25.12.2004)
    Hot Shot vom 20.05.05 - Carlito Cena (Samstag 21.05.2005)
    Vorschau 1144 vom 04.11.07 - gillo (Dienstag 25.09.2007)
    Beschlüsse der Ratssitzung vom 20.01.2007 - Deathlon (Sonntag 21.01.2007)
    Listening to Woche vom 20.02. - 26.02.06 - [UCF] PhInIx0r | _=NpC=_ (Freitag 24.02.2006)
    Vorlesung am 1.12.06 - OzzKaa (Samstag 25.11.2006)
    Bericht vom 24.09.2006 - Claire (Sonntag 24.09.2006)