Datenbankprogrammierung in C++...



  • http://www.pri.univie.ac.at/~itep/ws0405/hue/hue05a.html
    Ich würd das 3. Bsp machen, aber leider wüßte ich nicht genau wie?
    Oder welches Bsp. würdet ihr als am einfachsten empfinden, ich würd sagen alle sind etwa gleich schwer 😞
    Hab schon Probleme mit Arrays und hab keinen Schimmer wie ich das 3. Beispiel angehn soll. 😕
    Man sollte es ganz ohne Zeiger, spezielle externe Funktionen (z.B. strlen...etc) und Klassen lösen können.

    Elemente in ein Array einfügen (löschen, suchen versuch ich mal später) ist ja klar, aber ich muss noch berücksichtigen wie ich das Zuordnen kann zum bestimmten Interpreten, Albumname bzw Stilrichtung.
    Bedeutet dass ich ein 3 Dimensionales Array verwenden soll worin sich diese Elemente befinden? Das ist zwar sehr komplex, aber einen einfacheren Lösungsansatz gibt es nicht oder?



  • Servus!
    Ich würde es der Einfachheit mit einer Struktur machen...

    // z.B.
    
    struct CD
    {
          std::string album;
          std::string interpret;
          std::string stil;
    };
    

    Diese kannst du dann als einen "Array-Typ" verwenden.

    // z.B.
    
    CD vector[50];   // Array vom Typ CD.
    
    //... wenn du jetzt (z.B.) auf den Interpret mit dem
    // Index 1 zugreifen und diesen in einem temporären String speichern
    // willst, schreibst du:
    
    std::string temp = vector[1].interpret;
    

    ... aber das darfst du wahrscheinlich nicht. (eine Struktur ist fast das gleiche wie eine Klasse, mit dem Unterschied, dass standardmäßig alle Eigenschaften und Methoden public sind)

    Ansonsten, ist es IMHO das beste, wenn du ein 3-Demensionales-Array nimmst.

    //edit: 🙂

    Caipi



  • Was hat das mit Datenbankprogrammierung zu tun?

    Ich habe leider den Link auf die "No Homework Policy" nicht zur Hand.



  • Ringding schrieb:

    Was hat das mit Datenbankprogrammierung zu tun?

    Ich habe leider den Link auf die "No Homework Policy" nicht zur Hand.

    Naja zumindest die ersten 4 Beispiele sind doch Datenbank Beispiele, oder wie würdest du das bezeichnen?



  • Mir fehlt dazu der Datenbankserver. Ich würde es als "Einführung ins Programmieren"-Hausübung bezeichnen 🙂



  • Ist das 6. oder 7. einfacher?
    Vom Denken tut mir schon der Schädel weh und ich hab immer noch nix zusammengebracht 🙄
    Das Beispiel mit dem Zyklus hört sich einfacher an, aber nicht einmal das kann ich packen, das ist zum Verzweifeln.. 😞

    Das 6. würd ich so lösen, aber das ist auch nur ein Bruchteil:

    -gesamte Stringlänge ermitteln: for(i=0; kette[i]='\0'; i++);
    -Länge des 1. Teilstrings bestimmen. Länge:
    if(kette[i]==kette[0])
    irgendwas; 😃

    Dann weiss ich nicht weiter 😞

    Aber das Problem ist dass diese Methode nicht funktioniert wenn man z.B. aabbaabb eingibt, das ist echt zum Verzweifeln.



  • Servus Laserstrahl!
    Hier habe ich (hoffentlich) einen Denkanstoß...
    Habe ihn nur kurz getestet. Es sollte dir aber möglich sein, diesen Ansatz weiter auf deine Bedürfnisse anzupassen.

    unsigned int zyklus(const std::string& text)
    {
            unsigned int txtlen = text.length();
            unsigned int zyklus = 0;
            bool equal = false; // Teilstrings gleich?
    
            for(unsigned int i = 0; i < txtlen; ++i)
            {                                
                    for(unsigned j = 2; j < txtlen; ++j)
                    {
                            if(text[i] == text[j] && i != j)
                            {
                                    unsigned int tempI = i + 1;
                                    unsigned int tempJ = j + 1;
    
                                    for( ; tempI < txtlen && tempJ < txtlen; ++tempI, ++tempJ)
                                    {                                
                                            if(text[tempI] == text[tempJ])
                                            {
                                                    equal = true;
                                            }                                                
                                            else
                                            {
                                                    equal = false;
                                                    break;
                                            }                
                                    }
    
                                    zyklus = tempJ - tempI;
                                    goto endOfLoops; // Oft verpoenter Befehl, da ich aber kein extra Fehlerflag setzen moechte 
                                                     // und er nur einmal vorkommt, habe ich mich trotzdem fuer goto entschieden.                                        
                            }
                    }
            }
            endOfLoops:
    
            if(equal)
                    return zyklus;
            else
                    return 0;        
    }
    

    Zur Funktion zyklus:
    Parameter: Der zu pruefende String.
    Return-Wert: Sofern Zyklus vorhanden, die Länge von selbigem, andernfalls 0.

    Hoffe ich konnte ein wenig helfen. 🙂

    Caipi

    //edit:
    2-mal die Aufgabenstellung nicht richtig beachtet...


Anmelden zum Antworten