AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler bei Sudoku Korrektur

Ein Thema von Grimsch · begonnen am 14. Dez 2009 · letzter Beitrag vom 15. Dez 2009
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz