Einzelnen Beitrag anzeigen

Grimsch

Registriert seit: 14. Dez 2009
5 Beiträge
 
#1

Fehler bei Sudoku Korrektur

  Alt 14. Dez 2009, 18:15
Hallo liebe Community ich hätte da mal eine Frage.
Und zwar programmiere ich gerade ein Sudoku per Delphi aber komme gerade nicht weiter, da sich irgendwie bei mir ein Fehler eingeschlichen hat. Meine Idee war es die Korrektur bzw die Überprüfung ob das Sudoku richtig ist mit Summen zu lösen, d.h. in jeder spalte, zeile und quadrat muss eine Summe von 45 vorliegen.
Allerdings kommt zum schluss bei mir immer nach der Überprüfung die Meldung dass die lösung falsch sei.
hier der quelltext in dem ich den Fehler vermute:

Delphi-Quellcode:
function testspalte:boolean; {Namensgebung der Funktion}
var x, y, sum: integer;
begin
 result:= false; {Ergebnis ist vorerst falsch}
  for x:= 0 to 8 do {alle spalten werden gezählt}
   begin
   sum:= 0; {summe wird auf null gestellt für jede neue spalte}
     for y := 0 to 8 do {alle reihen durchzählen}
     sum:= sum+ sudoku[x,y,a]; {den wert des jeweiligen Feldes zur Summe hinzuaddiern}
     if sum<>45 then {wenn summe nicht 45 dann bleibt result:=false}
     exit;
  end;
  result:= true; {nachdem der test bestanden werden sollte wird das ergebnis auf true gesetzt}
end;

function testzeile:boolean;
var x, y, sum: integer;
begin
result:=false;
for y:= 0 to 8 do
begin
sum:=0;
 for x:= 0 to 8 do
 sum:= sum+ sudoku[y,x,a];
 if sum<>45 then
 exit;
 end;
 result:= true;
 end;

function testquadrat:boolean;
var p, q, x, y, sum:integer;
begin
result:= false;
 for p:= 0 to 2 do {spalten der quadrate durczählen}
  for q:= 0 to 2 do {reihen der quadrate durchzählen}
  begin
  sum:= 0;
  for x:= 0 to 2 do {spalten in den quadraten zählen}
   for y:= 0 to 2 do {reihen in den quadraten zählen}
   sum:= sum + sudoku[p*3+x,q*3+y,a];
   {in diesem fall muss mal 3 genommen werden, da jeweils 9 zeilen und spalten
   vorhanden sind und nicht nur 3.}

    if sum<>45 then
    exit;
   end;
   result:= true;
   end;


procedure TForm1.Button2Click(Sender: TObject);
begin
if testspalte and testzeile and testquadrat then showmessage('Sie haben das Sudoku richtig gelöst!')
{wenn in allen funktionen der test bestanden wurde erscheint diese Nachricht}
else
showmessage('Das Sudoku ist fehlerhaft.'); {ansonsten fehlermeldung}
end;
wäre super wenn ihr mir helfen könntet... muss das spiel morgen im Unterricht vorstellen >.<
  Mit Zitat antworten Zitat