Soduku-Löser

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:
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:
Hi.
So bitte hier hab ihr eure Tags!!
Aber wirklich weiter bin ich trotzdem noch nicht !!
Du wolltest nicht zufällig in Zeile 84 eigentlich die Funktion "eingabe" aufrufen, oder?

Das tust du aber nicht, das was da steht ist eine Funktionsdeklaration - die absolut nichts bewirkt. Nimm mal das Schlüsselwort "void" da weg.

Gruß
 
Das mit dem void war gut das hatte ich total übersehen und die anderen probleme sind auch schon teilweise gelöst.
Danke:)
 
Zurück