jup, was genau meinst du mit die eingabe wird übersprungen?
ruft er die methode gar nicht auf, oder schreibt er zwar die dinge hin und fragt nach keiner eingabe, oder kommt er nicht in die do while schleife?
ich habe schon vor längerer zeit mit C++ eine com schnittstelle entwickelt, die man dann z.bsp. unter excel oder VB verwenden konnte, um ein Array zu lösen und _Alle_ möglichen sudoku lösungen geliefert bekommt
ich würde einfach mal ein bisschen debuggen, überlegen wegen deinen bedingungen, warum du da nicht reinkommst etc... wenn du nicht in Visual studio programmierst, dann gib einfach am anfang von der eingabe() mal was aus, und schau obst da reinkommst, usw... sonst einfach richtig debuggen
hier sind ein paar dinge die mir aufgefallen sind:
int sudoku[9][9] = {0}; ? da ich jetz mehr java programmiere, bin ich mir nicht sicher, aber für mich sieht das sehr sehr komisch aus.
bei mir sieht ein 2 dimensionales array in C++ so aus:
so würde ich in c++ ein 2-dim array machen, wenn das wirklich so kurz geht, schön ^^
und noch ein paar dinge die mir bezüglich sudoku selbst aufgefallen sind
deine gültigkeitsprüfung sieht definitiv falsch, ich habs nur überflogen, aber das ist nicht alles was ein sudoku haben muss
mach 3 methoden die bool liefern und verknüpfe diese mit einem und, wenn also eine davon falsch ist, ist das ganze nicht gültig
1. methode: zahl darf nur einmal in der reihe vorkommen
2. methode: zahl darf nur einmal in der spalte vorkommen
3. zahl darf nur einmal im quadrat vorkommen
ein guter sudokusolver ist gar nicht so leicht zu implementieren
wenn es dir nur darum geht das dein benutzer immer eine zahl mehr eingibt und du überprüfst obs noch stimmt, und dann die nächste zahl einliest, dann reicht dir diese gültigkeitsprüfung
wenn du das ganze vom computer berechnen lassen willst, gibt es 2 ansätze: zufälliges einfügen von zahlen, und probieren ob valid, wenn nicht, zurücksetzen neue zahl
oder mittels backtracking, dann werden auch _Alle_ lösungen gefunden, was aber bei einem 9x9 soduku mit ca. 5 zahlen vorgeben sehr sehr viele lösungen sind, das is dann zu beachten wie du dich entscheidest
und vielleicht darf ich noch die frage stellen, warum du einen Sudoku solver mit C++ machst? musst das für deine Schule / Studium machen? weil sonst gibts wirklich bessere sprachen dafür, wo man z.bsp. mit hilfe von grafischer oberfläche verwendet oder z.bsp. als COM schnittstelle under Excel verwendet
aber diese consolen geschichte als sudoku solver ist ja ziemlich eine wildes unterfangen
mfg
ruft er die methode gar nicht auf, oder schreibt er zwar die dinge hin und fragt nach keiner eingabe, oder kommt er nicht in die do while schleife?
ich habe schon vor längerer zeit mit C++ eine com schnittstelle entwickelt, die man dann z.bsp. unter excel oder VB verwenden konnte, um ein Array zu lösen und _Alle_ möglichen sudoku lösungen geliefert bekommt
ich würde einfach mal ein bisschen debuggen, überlegen wegen deinen bedingungen, warum du da nicht reinkommst etc... wenn du nicht in Visual studio programmierst, dann gib einfach am anfang von der eingabe() mal was aus, und schau obst da reinkommst, usw... sonst einfach richtig debuggen
hier sind ein paar dinge die mir aufgefallen sind:
int sudoku[9][9] = {0}; ? da ich jetz mehr java programmiere, bin ich mir nicht sicher, aber für mich sieht das sehr sehr komisch aus.
bei mir sieht ein 2 dimensionales array in C++ so aus:
C++:
int** a;
int dimension;
a = new int*[dimension];
for (int i = 0; i < dimension; i++)
a[i] = new int[dimension];
und dann in einer doppeltverschachtelten for schleife alle elemente mit 0 initialsieren
for
for
a[i][j] = 0;
so würde ich in c++ ein 2-dim array machen, wenn das wirklich so kurz geht, schön ^^
und noch ein paar dinge die mir bezüglich sudoku selbst aufgefallen sind
deine gültigkeitsprüfung sieht definitiv falsch, ich habs nur überflogen, aber das ist nicht alles was ein sudoku haben muss
mach 3 methoden die bool liefern und verknüpfe diese mit einem und, wenn also eine davon falsch ist, ist das ganze nicht gültig
1. methode: zahl darf nur einmal in der reihe vorkommen
2. methode: zahl darf nur einmal in der spalte vorkommen
3. zahl darf nur einmal im quadrat vorkommen
ein guter sudokusolver ist gar nicht so leicht zu implementieren
wenn es dir nur darum geht das dein benutzer immer eine zahl mehr eingibt und du überprüfst obs noch stimmt, und dann die nächste zahl einliest, dann reicht dir diese gültigkeitsprüfung
wenn du das ganze vom computer berechnen lassen willst, gibt es 2 ansätze: zufälliges einfügen von zahlen, und probieren ob valid, wenn nicht, zurücksetzen neue zahl
oder mittels backtracking, dann werden auch _Alle_ lösungen gefunden, was aber bei einem 9x9 soduku mit ca. 5 zahlen vorgeben sehr sehr viele lösungen sind, das is dann zu beachten wie du dich entscheidest
und vielleicht darf ich noch die frage stellen, warum du einen Sudoku solver mit C++ machst? musst das für deine Schule / Studium machen? weil sonst gibts wirklich bessere sprachen dafür, wo man z.bsp. mit hilfe von grafischer oberfläche verwendet oder z.bsp. als COM schnittstelle under Excel verwendet
aber diese consolen geschichte als sudoku solver ist ja ziemlich eine wildes unterfangen
mfg
Zuletzt bearbeitet: