zu der Aufgabe etwas weiter unten Kundenverwaltung



  • #include <iostream>
    #include <cstring> 
    
    using namespace std;
    
    int main()
    {    
    
    char *nachname= new char[];
    char *vorname= new char[];
    char *straße= new char[];
    char plz[6];
    char *wohnort= new char[];
    char geburtsdatum[11];
    
    cout<<"Nachname?";
    cin>>nachname;
    std::strcpy(nachname);
    
    cout<<"Vorname?";
    cin>>vorname;
    std::strcpy(vorname); 
    
    cout<<"Straße?";
    cin>>straße;
    std::strcpy(straße);
    
    cout<<"PLZ?";
    cin>>plz;
    
    cout<<"Wohnort?";
    cin>>wohnort;
    std::strcpy(wohnort);
    
    cout<<"Geburtsdatum?";
    cin>>geburtsdatum;
    
    std::cout << nachname;
    std::cout << vorname; 
    std::cout << straße;
    cout<<plz;
    std::cout << wohnort; 
    cout<<geburtsdatum;
    
    delete[] nachname;
    delete[] vorname;
    delete[] straße;
    delete[] wohnort;
    
    system("PAUSE");
    
    }
    


  • Jetzt fängst du an zu raten... der C++ Code lässt sich nicht kompilieren, und so wird´s nix. Mach dir besser erst Gedanken über deine Lösung und setze das dann um, anstatt deinen C++ Code solange herumzuschieben, bis er halbwegs vernünftig funktioniert.

    Beantworte (dir selbst!) doch bitte folgende Fragen:

    - welche Zeigervariablen habe ich?
    - welche Zeigervariable zeigt auf welche Adresse? Wie groß ist der reservierte Speicherbereich, auf den sie zeigt?


  • Mod

    Versuchst du wirklich das Thema zu verstehen oder rätst du nur solange bis es zufällig richtig ist?

    Das was du jetzt hast ist jedenfalls ganz weit von der richtigen Lösung weg und dürfte dir total um die Ohren fliegen. Wenn es überhaupt compiliert, was mich überraschen würde.



  • ich bin einfach nur total überfordert...bin kurz davor auf zu geben, da ich kein bisschen dahinter komme



  • Lass Dir ruhig Zeit, gib Dir Mühe, lies Dir nochmal die Aufgabenstellung durch, denk drüber nach, wie das Speicherlayout aussehen soll, wenn zwei Kunden "im Speicher stehen". Bevor Du nicht mal zum richtigen Speicherlayout gekommen bist, macht sämtlicher C++ Code IMHO keinen Sinn. Warum solltest Du auch etwas anfangen zu programmieren, wenn Du nicht weißt, was da eigentlich rauskommen soll?

    Nirgends in der Aufgabenstellung steht übrigens, dass die Zeichenketten der einzelnen Eigenschaften alle in einem Feld gespeichert werden sollen. So ist das nicht gedacht. Die einzelnen Zeichenketten für Name, Vorname usw sollen nach Bedarf einzeln im Speicher reserviert werden. Die einzelnen Zeiger, die sich die Anfagsadressen der im Speicher reservierten char-Felder merken und ggf auch etwas anderes, sollen aber hintereinander im Speicher stehen (Feld). Der Lehrer will ein Feld aus Zeigern sehen, die wiederum auf char-Felder zeigen (oder auch nicht, wenn zB kein Geburtsdatum bekannt ist).



  • AlleNamenBelegt schrieb:

    int main()
    {    
    char *nachname= new char[];
    char *vorname= new char[];
    char *straße= new char[];
    …
    }
    

    Weißt Du, es macht nicht so richtig Spass, wenn man sich wiederholen muss. 😞 Du musst auch mal'n bissel aufpassen, was man Dir so sagt. C++ Code kannst Du erstmal vergessen, bevor Du nicht weißt, was das Programm eigentlich machen soll. Und dass C++ kein ß in Bezeichnernamen mag, habe ich auch schonmal gesagt.

    Irgendwie habe ich den Eindruck, dass Du im Unterricht gar nicht aufgepasst hast. Problem ist ja nicht nur die Sprache C++ sondern generell eine Programmiererfahrung, die quasi Null ist. Die Aufgabe ist aber auch fies, IMHO. Also eine schlechte Kombination. 😞

    viel Erfolg noch!
    Ich geh jetzt erstmal ins Freibad...

    kk



  • ich habe jetzt die komplette Aufgabe erledigt wie ich denke....allerdings möchte ich die nicht öffentlich posten...hinterher geht hier einer aus meiner klasse hin und denkt er kopiert sich das ganze....

    allerdings habe ich noch ein wenig flüchtigkeitsfehler drin....da mein compiler ein wenig am mosern ist...nur habe ich das wirklich nicht mehr gefunden....
    ich hab eben ordentlich kaffee getrunken und mich hochkonzentriert da ran gesetzt,.... wie mache ich es jetzt am besten, dass jemand darüber schauen kann ohne das es für die ganze welt zugänglich ist?



  • Wenn es nicht deutlich besser ist als die vorherigen Versionen, gibts bei dir eh nicht viel abzuschreiben. Ich denke also, dass du den Code problemlos posten kannst.



  • Das, was ich sehen wollte, sieht ungefähr so aus:
    (Ich habe die anderen Eigenschaften wie Adresse, Geburtstadum weggelassen.)

    ,------------------.
                   /                   |
                  /                    V
    Kunde  +---+-/-+---+             +---+---+---+---+---+---+-----+
      1    | * | * | * |             | M | e | i | e | r |\0 | ... |
           +-|-+---+-\-+             +---+---+---+---+---+---+-----+
             |        \   
             |         \             +---+---+---+---+---+---+-----+
             |          `----------->| F | r | i | t | z |\0 | ... |
             |                       +---+---+---+---+---+---+-----+
             |
             |      ,------------------.
             |     /                   |
             V    /                    V
    Kunde  +---+-/-+---+             +---+---+---+---+---+---+---+---+-----+
      2    | * | * | * |             | S | c | h | m | i | d | t |\0 | ... |
           +-|-+---+-\-+             +---+---+---+---+---+---+---+---+-----+
             |        \   
             |         \             +---+---+---+---+---+---+-----+
             |          `----------->| F | r | a | n | k |\0 | ... |
             |                       +---+---+---+---+---+---+-----+
             |
             |      ,------------------.
             |     /                   |
             V    /                    V
    Kunde  +---+-/-+---+             +---+---+---+---+---+---+---+---+-----+
      3    | * | * | * |             | M | u | e | l | l | e | r |\0 | ... |
           +-|-+---+-\-+             +---+---+---+---+---+---+---+---+-----+
             |        \   
             |         \             +---+---+---+---+---+---+---+-----+
             |          `----------->| T | h | o | m | a | s |\0 | ... |
             |                       +---+---+---+---+---+---+---+-----+
             |
             V
    
         Nirgenswo
     (Ende der Liste)
       (Nullzeiger)
    

    Die "Arrays", die man hier sieht, sollen laut Aufgabenstellung alle per malloc oder new[] angelegt werden, also "dynamisch". Die Zeigerhaufen sollte man wahrscheinlich in einem Struct zusammenfassen:

    struct kunde
    {
      kunde *next;
      char  *name;
      char  *vorname;
    };
    

    Wie gesagt: In C++ würde man das so nicht machen, weil es bessere Alternativen gibt.

    kk



  • Ja irgendwie hab ichs überhaupt nicht mit Zeigern...verstehe sie bis heute nicht...allerdings habe ich die aufgabe lösen können...es funktioniert ...wird kompiliert und ausgeführt...so wie es soll. wenn ich da formal trotzdem noch was falsch gemacht habe mit den zeigern ist es mir gerade recht egal, ich bin froh das es läuft.



  • AlleNamenBelegt schrieb:

    Ja irgendwie hab ichs überhaupt nicht mit Zeigern...verstehe sie bis heute nicht...

    Schlechte Voraussetzung zum Lösen der Aufgabe

    AlleNamenBelegt schrieb:

    allerdings habe ich die aufgabe lösen können [...] so wie es soll.

    Das bezweifle ich ganz stark.

    AlleNamenBelegt schrieb:

    wenn ich da formal trotzdem noch was falsch gemacht habe mit den zeigern ist es mir gerade recht egal, ich bin froh das es läuft.

    👎 🙄


Anmelden zum Antworten