Sudoku KLassen Wirrwar



  • Hi also ich will ein Programm schreiben was Sudokus generiert.

    und ich weiß das ich dafür 3 Klassen benötige die checken das die Zahlen (0-9) auch wirklich nur einmal (nicht mehr und nicht weniger) vorkommen also einmal eine die die horintontalen checkt, dann die vertikalen und zum schluss nochmal eine die jeweils die 3x3 Felder checkt. So ich bin soweit das ich ein 2dm Array habe was erstmals nur mit nullen gefüllt ist,

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        int Sudoku_feld[9][9];
    
        for(int a=0;a<9;a++)
        {
            for(int s=0;s<9;s++)
            {
                if(a==s-1)
                Sudoku_feld[a][s]=0;
                else
                    Sudoku_feld[a][s]=0;
                cout << Sudoku_feld[a][s] << " ";
            }
            cout << endl;
        }
        cout << endl;
    
                cin.ignore();
                cin.get();
                return 0;
    }
    

    So ich habe auch verstenden was es mit den klassen aufsich hat ABER ich weiß nciht wie ich daran gehn soll solch eine klasse zu schreiben vorallem da ich nirgenwo infos zu solch einer klasse gedunden habe, nur immer irgendwelche klassen zu Autos und Fahrezugen und ähnliches. naja hoffe ihr habt ein paar tipps für mich


  • Administrator

    Souleater schrieb:

    So ich habe auch verstenden was es mit den klassen aufsich hat ABER ich weiß nciht wie ich daran gehn soll solch eine klasse zu schreiben vorallem da ich nirgenwo infos zu solch einer klasse gedunden habe, nur immer irgendwelche klassen zu Autos und Fahrezugen und ähnliches. naja hoffe ihr habt ein paar tipps für mich

    Ehm, wie soll man das denn jetzt verstehen? Du bist zu faul ein C++ Tutorial zu machen oder ein vernünftiges C++ Buch zu kaufen, um dir das Wissen zu C++ anzueignen, deshalb sollen wir dir das nun erklären ... oder wie?

    Oder willst du wissen, wie die Klassen aufgebaut sein müssen, damit sie entsprechende Algorithmen bieten? Dann wäre es aber sinnvoll, wenn du zuerst deine Ansätze präsentierst.
    Ich würde dazu nicht mal Klassen machen, sondern nur mit Funktionen arbeiten, also ...
    Mir ist nicht so ganz klar, was du nun willst.

    Grüssli



  • Nein ich habe ein C++ Buch und ich habe auch mehere C++ Tutorials durchgelesen und auch soweit verstanden ABER ich weiß trotzdem nicht wie ich eine Klasse schreiben kann die für mich das tut was ich oben beschrieben habe, da in den tutos meist nur klassen als Beispiele verwendet werden mit denen ich nichts anfangen kann (bzw zum vertsehn von klassen mögen diese ja hilfreich sein aber halt nicht für das was ich vor habe)



  • Und warum sollen nun ausgerechnet die Tests in Klassen gepackt werden? Wenn du schon OOP machen willst, warum dann nicht auch das Spielfeld als solche implementieren?

    Ansonsten: wie würdest du es denn ohne Klassen lösen?



  • ich habe nichts dagegen auch das Spielfeld in OOP zu schreiben. k aber dann müsste ich ja ein klassen array schreiben oder nicht?



  • Souleater schrieb:

    ich habe nichts dagegen auch das Spielfeld in OOP zu schreiben.

    Du musst dich entscheiden. Aber wo liegt denn nun dein Problem? Was genau kannst du nicht in eine Klasse umsetzen?

    Souleater schrieb:

    k aber dann müsste ich ja ein klassen array schreiben oder nicht?

    Was verstehst du unter einem Klassen-Array? Wahrscheinlich eine Klasse, die ein Array besitzt, oder (ein Array aus Objekten würde hier nicht sehr viel Sinn machen)?



  • Souleater schrieb:

    k aber dann müsste ich ja ein klassen array schreiben oder nicht?

    Was verstehst du unter einem Klassen-Array? Wahrscheinlich eine Klasse, die ein Array besitzt, oder (ein Array aus Objekten würde hier nicht sehr viel Sinn machen)?[/quote]

    jop ersteres!! das kriege ich denke ich mal auch hin! und mein Problem liegt darin das ich nicht weiß wie man eine klasse dekleriert die für mich obene genanntes tun soll!!



  • Und du hast dich wirklich mit Klassen beschäftigt?

    class SudokuFeld
    {
        public:
            // deine Schnittstelle
    
        private:
            int Feld[9][9]; // besser std::tr1::array
            // deine restlichen privaten Member
    };
    

    Ich sehe dein Problem nicht. Falls dich das nicht zufriedenstellt, solltest du dich genauer ausdrücken. Du redest bis jetzt immer nur davon, dass du nicht weisst, wie du eine solche Klasse schreibst. Und das ist nicht wirklich eine gute Problembeschreibung.


  • Administrator

    @Nexus,
    Nein, er schreibt, er wüsste nicht, wie er eine Klasse schreibt, wisse aber, was eine Klasse ist. Das ist in meinen Augen aber ein völliger Widerspruch.

    @Souleater,
    Lies am besten nochmals deine C++ Bücher und Tutorials durch und mach die Übungen darin. Programmiere die Beispiele und teste ein wenig aus. Denn wie mir bisher scheint, hast du nicht viel Begriffen, was dir in deinen Bücher und Tutorials vermittelt wurde. Vielleicht solltest du dir auch bessere Bücher und Tutorials zulegen. Als Bücher werden vor allem die zwei (drei) empfohlen:
    - C++ Primer
    - Thinking in C++ 1&2

    Grüssli



  • Dravere schrieb:

    @Nexus,
    Nein, er schreibt, er wüsste nicht, wie er eine Klasse schreibt, wisse aber, was eine Klasse ist. Das ist in meinen Augen aber ein völliger Widerspruch.

    Warum? - Eine Klasse ist ein abstraktes Modell. Man kann die auch verstehen, ohne zu wissen, wie man eine programmiert. Klar, üblicherweise ist das immer sehr ähnlich, aber die genaue Syntax ist von Sprache zu Sprache (zumindest leicht) verschieden..


  • Administrator

    drakon schrieb:

    Dravere schrieb:

    @Nexus,
    Nein, er schreibt, er wüsste nicht, wie er eine Klasse schreibt, wisse aber, was eine Klasse ist. Das ist in meinen Augen aber ein völliger Widerspruch.

    Warum? - Eine Klasse ist ein abstraktes Modell. Man kann die auch verstehen, ohne zu wissen, wie man eine programmiert. Klar, üblicherweise ist das immer sehr ähnlich, aber die genaue Syntax ist von Sprache zu Sprache (zumindest leicht) verschieden..

    Er hat gesagt, dass er ein C++ Buch gelesen hat und mehrere C++ Tutorials gemacht hat. Da wird wohl irgendwo gestanden haben, wie man eine Klasse schreibt, also wie die Syntax aussieht. Sonst ist das aber mehr als nur ein Schrott Buch, bzw. Schrott Tutorials.

    Grüssli



  • jetz hab ich mal ne frage

    // besser std::tr1::array

    was ist das denn?

    std::tr1 ?? noch nie davon gehört/gelesen

    wikipedia sagt dazu einfach nur container fester größe...
    wo ist denn der unterschied zu int feld[9][9]?



  • So erstmal danke an Nexus das hilft mir schon weiter.So wie es scheint habe ich mich noch nciht klar genug ausgedrückt ich weiß was klassen sind und kann auch welche schreiben ABER halt nicht diese speziellen, und noch ne Frage an Nexus was meinst du mit schnittstellen?? die stellen wo die klasse schaun sol ob jetzt die Zahlen 1-9 vorhanden sind oder was? sry bin nicht grade der schnelste





  • Also habe mir so einige von den tutos angekuckt die du mir da gezeigt hast allerdings steht da auch in keinem drin was mir helfen könnte ! ich versuche es nochmal zu erklären da es ja bisher missverstanden worden ist worin mein Problem liegt. Also ich weiß was klassen sind kann diese auch im Normalfall Deklarieren nur nicht in diesem fall weil ich nicht weiß wie man eine klasse erstellen soll die (halt in diesem fall) ein 2DM 9x9 Array checkt einmal vertikal einmal horizontal und dann noch jeweils alle, in dem Feld enthaltenen, 3x3 Felder.( also das alles soll nicht eine klasse können sondern ruhig 3)Und checken sollen diese KLassen erstens ob jeweils alle Zahlen von 1-9 EINMAL enthalten sind falss nicht dies koriegen!

    Hoffe mein Problem ist jetzt etwas verständlicher



  • Souleater schrieb:

    Hoffe mein Problem ist jetzt etwas verständlicher

    Ein wenig, aber das scheint mir der falsche Ansatz zu sein. Besonders "es können auch 3 Klassen sein". Du bringst da Klassen und Funktionen etwas durcheinander. Klassen repräsentieren ein Objekt, das einen gewissen Status annehmen kann. Ein Objekt existiert sozusagen. Funktionen hingegen führen eine gewisse Aufgabe/Prozedur/Anweisung durch. Sie tun etwas in Abhängigkeit von den übergebenen Argumenten.

    Wie eine Klasse mit einem Array aussieht, habe ich ja gezeigt. std::tr1::array ist eine Klasse, die die Funktionalität eines Arrays hat. Nur komfortabler, sicherer und weniger fehleranfällig.



  • AHH ja das kann sein, mmh gut dann beschäftige ich mich nochmal ausführlich mit Funktionen! Thx


Anmelden zum Antworten