1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Deutsch
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Pointer Basics - Hilfe gesucht !!

  • Larry
  • 21. Januar 2005 um 20:55
  • Unerledigt
  • Larry
    2
    Larry
    Mitglied
    Punkte
    35
    Beiträge
    6
    • 21. Januar 2005 um 20:55
    • #1

    Hallo Leute. :shinner:
    Bin neu hier im Forum und ein ziemlicher Grünschnabel in C++.
    Stehe nun vor folgendem Problem:
    Nach dem Starten des Programms und Eingabe von Zahlenwerten, werden die Zahlen in der umgekehrten Reihenfolge ihrer Eingabe ausgegeben. WARUM???
    Vielleicht hat ja der Eine oder Andere Profi kurz für mein Problem Zeit.

    Danke
    Larry


    <SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: Tahoma">

  • rck
    15
    rck
    Mitglied
    Reaktionen
    2
    Punkte
    2.342
    Beiträge
    437
    • 21. Januar 2005 um 21:13
    • #2
    Zitat von Larry

    Nach dem Starten des Programms und Eingabe von Zahlenwerten, werden die Zahlen in der umgekehrten Reihenfolge ihrer Eingabe ausgegeben. WARUM???

    Fettes Statement :-/

    Ich rate mal ins Blaue. Du tust die Daten in eine Verkettete Liste und hängst immer am Anfang rein. Tu statt dessen am Ende anhängen.

    Wenn's das nicht ist, wäre ein Listing gut. die Hellsehen VO hab ich im TUWIS leider noch nicht entdeckt, aber vielleicht hast ja Du da eine URL für mich?

    [ egapemoh eniem ] [ Korneuburg Community ] [ FB ] [ Xng ]

  • Larry
    2
    Larry
    Mitglied
    Punkte
    35
    Beiträge
    6
    • 21. Januar 2005 um 21:25
    • #3

    Danke für die schnelle Reaktion - habe leider auch so meine Probleme ein Listing hier hereinzubekommen (Schande !) arbeite gerade daran
    Larry

  • rck
    15
    rck
    Mitglied
    Reaktionen
    2
    Punkte
    2.342
    Beiträge
    437
    • 21. Januar 2005 um 21:31
    • #4
    Zitat von Larry

    Probleme ein Listing hier hereinzubekommen

    How to paste a listing

    1. Datei in einem Editor aufmachen
    2. gewünschte Textpassage in die Zwischenablage kopieren
    3. Reply / New Topic im Forum machen
    4. Textpassage einfügen
    5. Vorher ein [code], dannach ein [/code]
    6. vor und / oder nach dem code noch zwei oder drei Absätze zur Problembeschreibung.

    Zu wenig Text lässt auf fehlendes Engagement schließen, zu viel langweilt.

    [ egapemoh eniem ] [ Korneuburg Community ] [ FB ] [ Xng ]

  • Larry
    2
    Larry
    Mitglied
    Punkte
    35
    Beiträge
    6
    • 21. Januar 2005 um 21:37
    • #5

    Wollte es aus dem Word rauskopieren. - Danke für den Hinweis.
    Hier das Listing:
    Ausgabe umgekehrt der Eingabe !?

    C
    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
     
     
    struct Element
    {
    int x;
    Element *z;
    }; 
     
     
    void main (void)
    {
    Element *e, *ae, *aus;
    int i; 
     
    printf("Bitte Zahl eingeben: ");
    scanf("%d",&i);
     
     
    ae = new Element;
    ae->x = i;
    ae->z = NULL;
     
    printf("Bitte Zahl eingeben: ");
    scanf("%d",&i);
     
    while(i != 999)
    {
     
    e = new Element;
    e->x = i;
    e->z = ae;
     
    ae = e;
     
    printf("Bitte Zahl eingeben: ");
    scanf("%d",&i);
    }
     
    aus = e;
     
    while(aus)
    {
    printf("%d\n",aus->x);
     
    aus = aus->z;
    }
    Alles anzeigen
  • rck
    15
    rck
    Mitglied
    Reaktionen
    2
    Punkte
    2.342
    Beiträge
    437
    • 21. Januar 2005 um 21:52
    • #6
    Zitat von Larry

    Wollte es aus dem Word rauskopieren. - Danke für den Hinweis.
    Hier das Listing:

    Und das hast Du selber programmiert?!

    Wenn ja: Bitte nenne die Variablen so, dass man einen Sinn zuordnen kann. zB head, tail, ptr, was weis ich.

    Wenn nein: Schau Dich doch mal im google um, da gibt's einen Haufen tutorials zu verketteten Listen. Such einfach nach "linked list c++"

    [ egapemoh eniem ] [ Korneuburg Community ] [ FB ] [ Xng ]

  • rck
    15
    rck
    Mitglied
    Reaktionen
    2
    Punkte
    2.342
    Beiträge
    437
    • 21. Januar 2005 um 21:53
    • #7

    Außerdem: Wieso verlangst Du mindestens zwei Zahlen? Wo ist der Zusammenhang zu 999, woher soll der Benutzer wissen, dass er ausgerechnet 999 eintippen soll, um das Programm zu beenden?

    Wieso ist die Zahleneingabe drei mal drinnen, reicht nicht einmal und/oder eine Funktion dafür?

    [ egapemoh eniem ] [ Korneuburg Community ] [ FB ] [ Xng ]

  • Larry
    2
    Larry
    Mitglied
    Punkte
    35
    Beiträge
    6
    • 21. Januar 2005 um 22:10
    • #8

    Zunächst mal ein Danke für die Mühe.
    Ja, das Programm ist selbst programmiert und ist nur eine Übung zum Unterricht und dient lediglich der Vorbereitung auf einen bevorstehenden Test (Abendschule). Ziel dieser Übung ist nichts anderes, als die Zahlen in der richtigen Reihenfolge rauszubekommen. Weiß zwar jetzt nicht mehr als vorher - aber werd mich mal im Google schlau machen.
    Danke
    Larry

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 21. Januar 2005 um 22:15
    • #9

    rck: ae ist anfangselement, e ist element und aus ist das letzte :)

    Larry: es ist ja ganz logisch: du weist immer dem neuen element einen zeiger auf das zuletzt erstellte zu. am schluss beginnst du bei aus und gehst den zeigern nach, natürlich gibt er dann alles von hinten nach vorne aus, also zuerst das letzte, dann das davor erstellte usw. um es zu korrigieren, müsstest du dem zuletzt erstellten einen zeiger auf das neue element zuweisen..

    lg michi

  • Larry
    2
    Larry
    Mitglied
    Punkte
    35
    Beiträge
    6
    • 21. Januar 2005 um 22:27
    • #10

    Hättest Du vielleicht einen kurzen Tipp, wie man dies in meinem Fall anstellt?

  • rck
    15
    rck
    Mitglied
    Reaktionen
    2
    Punkte
    2.342
    Beiträge
    437
    • 21. Januar 2005 um 23:20
    • #11
    Zitat von michi204

    rck: ae ist anfangselement, e ist element und aus ist das letzte :)

    Ok, Prüfungsstress und so. Danke für den Hinweis. Wenigstens die Eingangsdiagnose hat gestimmt, sogar ohne Listing *ggg*

    Hmm. Wie wäre es mit einer Funktion "get_last()", die einfach den letzten Pointer rückliefert? Den dann entsprechend ändern.

    Ungetestetes Beispiel:

    Code
    Element *get_last(Element *root) {
      if(!root)
        return(new Element);
    
    
      while(root)
        root=root->z;
    
    
      return(root);
    }
    
    
    main() {
    
    
    ....
    
    
      el=new Element;
      el->z=NULL;
      el->x=i;
    
    
      get_last(ae)->z=el;
    }
    Alles anzeigen

    el ist eine temporär variable, ae Dein "anfangs Element" :)

    [ egapemoh eniem ] [ Korneuburg Community ] [ FB ] [ Xng ]

  • Prophet
    4
    Prophet
    Mitglied
    Punkte
    145
    Beiträge
    29
    • 21. Januar 2005 um 23:28
    • #12

    ae ist dein Anfangselement, ae->z wird anfangs auf NULL gesetzt da es keinen Nachfolger gibt. Waere ja nur logisch dies auf dein neukreiertes Element zeigen zu lassen... also statt...

    Code
    while(i != 999)
    {
    e = new Element;
    e->x = i;
    e->z = ae;
     
    ae = e;
     
    printf("Bitte Zahl eingeben: ");
    scanf("%d",&i);
    }
    Alles anzeigen

    etwas in der Art...

    Code
    [...]
    Element *tmp;
    [...]
    tmp = ae;
    while(i != 999)
    {
    e = new Element;
    e->x = i;
    e->z = NULL; // kein Nachfolger
    
    
    tmp->z = e; // Nachfolger setzten
    tmp = tmp->z; // aktuelles Element setzen
     
    printf("Bitte Zahl eingeben: ");
    scanf("%d",&i);
    }
    Alles anzeigen

    die Ausgabe kann dann in etwa so aussehen...

    Code
    tmp= ae;
    while(tmp) {
      printf("%d", tmp->i);
      tmp = tmp->z;
    }

    Eine primitive Liste mit Grundfunktionen wie get_head/get_tail zu konstruieren (oder in geeigneter Literatur nachzuschlagen/im iNet zu suchen) waer natuerlich auch eine Moeglichkeit.

    No way as the way. No limitation as limitation.

  • Larry
    2
    Larry
    Mitglied
    Punkte
    35
    Beiträge
    6
    • 22. Januar 2005 um 11:14
    • #13

    Danke für die zahlreichen und schnellen Hilfestellungen.

    Larry

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 22. Januar 2005 um 14:14
    • #14
    Zitat von Larry

    Hättest Du vielleicht einen kurzen Tipp, wie man dies in meinem Fall anstellt?


    Larry: auch wenn dein problem inzwischen schon gelöst ist: es empfiehlt sich, in so einem fall einfach eine skizze (mit kästchen + kleinen pfeilen, die woanders hinzeigen, für zeigervariablen und kästchen mit inhalt für andere variablen) zu machen, dann kommt man meistens ganz leicht drauf.

    lg michi

  • sauzachn
    17
    sauzachn
    Mitglied
    Reaktionen
    51
    Punkte
    3.101
    Beiträge
    606
    • 7. Februar 2005 um 20:31
    • #15
    Zitat von Larry

    Wollte es aus dem Word rauskopieren.


    Sag jetzt bitte, daß das nur ein Mißverständnis ist und daß du gar nicht mit Word deine C++ Programme schreibst. Bitte sag es *bettel*

    Dipper dipper dii dipper dii dipper dii duuu

  • michi204
    26
    michi204
    Mitglied
    Reaktionen
    63
    Punkte
    7.268
    Beiträge
    1.318
    • 7. Februar 2005 um 23:51
    • #16
    Zitat von sauzachn

    Sag jetzt bitte, daß das nur ein Mißverständnis ist und daß du gar nicht mit Word deine C++ Programme schreibst. Bitte sag es *bettel*

    ich schreibe sie auch mit word, du nicht? word ist ja auch ein schreibprogramm, oder? und da kann man die pointer auch gleich grafisch als pfeile einzeichnen. und das ganze dann ganz supa an alle seine freunde per html-email über die integrierte outlook-schnittstelle verschicken. :tongue1:

    lg michi

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

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

Benutzerkonto erstellen Anmelden

Rechtliches

Impressum

Datenschutzerklärung

  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  • Deutsch
  • English
Zitat speichern