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 >.<