kostenloser Webspace werbefrei: lima-city


Variable erstellen und umkehren...

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    schrotti12

    Moderator Kostenloser Webspace von schrotti12

    schrotti12 hat kostenlosen Webspace.

    So, ich sitzt jetzt d schon ein paar Stunden dran und komm nicht drauf...

    Ich habe in C eine Variable "bin".
    In einer Schleife sollen dieser Variable jeweils ein Wert hinzugefügt werden. Der alte soll aber erhalten bleiben und darf nicht gelöscht werden.

    Bei PHP würde das der Aufruf .= erfüllen. gibts sowas in C auch?

    Des weiteren soll diese Variable danach quasi umgedreht werden. D.h. sie soll von hinten nach vorne ausgegeben werden.
    Mit einem Feld wäre das alles kein Problem, aber leider kann ich kein Feld verwenden, da die Feldgröße nicht bekannt ist.

    Ich steh total an...

    Vieleicht kann mir ja einer helfen...
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. http://www.cppreference.com/stdstring/strcpy.html
    Eine String-Concatenation gibt es in C nicht, da Arrays eine feste Größe haben.

    http://www.cppreference.com/stdstring/strlen.html
    Damit ermittelst du die Länge des Zeichen-Feldes und kannst so von hinten ausgeben.

    Beitrag geändert: 31.10.2007 19:53:34 von bladehunter
  4. Autor dieses Themas

    schrotti12

    Moderator Kostenloser Webspace von schrotti12

    schrotti12 hat kostenlosen Webspace.

    Mit dem gehts auch nicht...

    Ich will in der Schleife einfach der bestehenden Variable (mittlerweile mit dem Datentyp char) bei jedem Schleifendurchlauf einen weiteren Wert (0 oder 1) anhängen. Die Variable soll dann, aber das macht die Schleife eh automatisch, an den Anfang der Schleife genommen werden und beim nächsten Durchlauf soll der nächste Wert angehängt werden... Wenn die Schleife durch ist, soll die Variable dann von hinten her ausgegeben werden. Das kann doch nicht so schwer sein... Ansonsten wäre C eine echt beschissene Sprache...

    Ich meine, Danke für deine Hilfe, aber ich komm trotzdem nicht weiter...
  5. Ist es auch nicht,
    wenn ich dich jetzt richtig verstanden habe, möchtest du, dass du 1, 1,1,0,1 nacheinander eingibst und dass dann am schluss 10111 da steht oder('bin' ist dein charfeld)?

    for(i=0;i<=n;i++)
    scanf("%s",&bin);

    damit liest du nacheinander die zeichen ein
    r&#252;ckw&#228;rts ausgeben? auch kein problem

    for(i=n;i>=0;i--)
    printf("%s",bin);
  6. In C++ k?nntest du dies mit der STL-Klasse list erledigen, in C wirst du deine eigene doppelt verkettete Listenstruktur implementieren m?ssen:

    struct ListElement
    {
    int nValue;
    struct ListElement* next;
    struct ListElement* last;
    };

    struct List
    {
    struct ListElement* first;
    struct ListElement* last;
    }

    void Init(struct List* list)
    {
    list->first = NULL;
    list->last = NULL;
    }

    void AddElement(struct List* list, int nValue)
    {
    struct ListElement* pElement = malloc(sizeof(structListElement));
    pElement->nValue = nValue;
    pElement->next = NULL;
    pElement->last = list->last;
    if (list->last == NULL)
    {
    list->first = pElement;
    list->last = pElement;
    }
    else
    {
    list->last->next = pElement;
    list->last = pElement;
    }
    }

    void DestroyList(struct List* list)
    {
    struct ListElement* p = list->first;
    while (p != NULL)
    {
    struct ListElement* pNext = p->next;
    free(p);
    p = pNext;
    }
    }


    Ein R?ckw?rtsausgeben der Liste w?rde etwa folgenderma?en aussehen;

    ListElement* p = list->last;
    while (p != NULL)
    {
    printf("%d", p->nValue)
    p = p->last;
    }
  7. Hallo,

    wenn du vorher wei&#223;t wieviele Werte du speichern willst, kannst du auch ein stinknormales Array verwenden:

    int bin[Anzahl];

    for(i=0;i<Anzahl;i++) {
    bin=42;
    }


    R&#252;ckw&#228;rtslaufen dann halt mit R&#252;ckw&#228;rtsschleife. Mit malloc() und free() kannst du Speicherplatz in der ben&#246;tigten Gr&#246;&#223;e auch zur Laufzeit dynamisch ausfassen. Nur ein nachtr&#228;glich Ver&#228;ndern der Gr&#246;&#223;e ist nicht so besonders fein machbar ^^

    MfG,
    thw
  8. Ein nachtr?gliches ?ndern der Gr??e mit realloc ginge notfalls auch, allerdings solltest du da schon ungef?hr wissen, mit welchen Gr??en du zu rechnen hast um ein zu h?ufiges neuallokieren zu verhindern

    z.B.:

    int nCurrentCount = 0;
    int nCurrentSize = 0;

    int* pArray = NULL;

    ...
    void add(int nNumber);
    {
    if (nCurrentCount == nCurrentSize)
    {
    nCurrentSize += 128;//Sinnvollen Wert je nach Problemstellung bestimmen
    pArray = realloc(pArray, nCurrentSize);
    }
    pArray[nCurrentCount] = nNumber;
    ++nCurrentCount;
    }
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!