LordNikon
2004-01-18, 14:59:23
Hi ,
hier erstmal der Delphi Code
procedure ueberprufen(sp,max:byte);
var ze:byte;
for ze:=1 to max do
if not bedrohung(sp,ze) Then
begin
dame[sp}:ze;
if checkbox1.Checked then brett.cells[sp-1,ze-1]:"X";
bedrohungsetzen(sp,ze,true);
if sp=max tthe begin
inc(anzahl);
end
else ueberpruefen(sp+1,max);
bedrohungsetzen(sp,ze,false);
if checkbox1.Checked then brett.Cells[sp-1,ze-]:='';
dame[sp]:0;
end
end
end;
Habe ich so in c++ so umgesetzt (und wegen einem logikfehler habe ich eine Zeile anders gesetzt):
void TForm1::ueberprufen(int sp ,int maxx)
{
int ze;
for (ze=1;ze<maxx;ze++)
{
if (bedrohung(sp,ze)==false)
{
dame[sp]=ze;
bedrohungsetzen(sp,ze,true);
if (cb->Checked==true)
{
sg->Cells[sp-1][ze-1]="X";
sg->Repaint();
}
if (sp==maxx)
{ ShowMessage("Test");
anzahl++;
txtloesung->Text=AnsiString(anzahl);
txtloesung->Repaint();
}
else
{
ueberprufen(sp+1,maxx);
}
bedrohungsetzen(sp,ze,false);
if (cb->Checked==true)
{
sg->Cells[sp-1][ze-1]="";
}
dame[sp]=0;
}
}
}
Ist die Umsetzung richtig ? Ich zweifel daran , da der Delphi Code von einem Freund ist und dort geht der gleiche Algorithmus ohne Probleme. So wird bei ihm die Anzahl auch wirklich immer angzeigt , während bei mir die Anezige nicht funktioniert , auch wenn sp und maxx den selben Wert hat. Irgendwie finde ich die Schleifen Syntax von Delphi nicht übersichtlich.
Ein weitere Frage ist wie groß dieser Array mit folgender Delphi Anweisung ist:
maxn3 ist 9
[CODE]
bedrunter:array[-maxn3..maxn3] of boolean;
[CODE]
Wäre das in c++
[CODE]
bool bedrunter[9];
[CODE
?
hier erstmal der Delphi Code
procedure ueberprufen(sp,max:byte);
var ze:byte;
for ze:=1 to max do
if not bedrohung(sp,ze) Then
begin
dame[sp}:ze;
if checkbox1.Checked then brett.cells[sp-1,ze-1]:"X";
bedrohungsetzen(sp,ze,true);
if sp=max tthe begin
inc(anzahl);
end
else ueberpruefen(sp+1,max);
bedrohungsetzen(sp,ze,false);
if checkbox1.Checked then brett.Cells[sp-1,ze-]:='';
dame[sp]:0;
end
end
end;
Habe ich so in c++ so umgesetzt (und wegen einem logikfehler habe ich eine Zeile anders gesetzt):
void TForm1::ueberprufen(int sp ,int maxx)
{
int ze;
for (ze=1;ze<maxx;ze++)
{
if (bedrohung(sp,ze)==false)
{
dame[sp]=ze;
bedrohungsetzen(sp,ze,true);
if (cb->Checked==true)
{
sg->Cells[sp-1][ze-1]="X";
sg->Repaint();
}
if (sp==maxx)
{ ShowMessage("Test");
anzahl++;
txtloesung->Text=AnsiString(anzahl);
txtloesung->Repaint();
}
else
{
ueberprufen(sp+1,maxx);
}
bedrohungsetzen(sp,ze,false);
if (cb->Checked==true)
{
sg->Cells[sp-1][ze-1]="";
}
dame[sp]=0;
}
}
}
Ist die Umsetzung richtig ? Ich zweifel daran , da der Delphi Code von einem Freund ist und dort geht der gleiche Algorithmus ohne Probleme. So wird bei ihm die Anzahl auch wirklich immer angzeigt , während bei mir die Anezige nicht funktioniert , auch wenn sp und maxx den selben Wert hat. Irgendwie finde ich die Schleifen Syntax von Delphi nicht übersichtlich.
Ein weitere Frage ist wie groß dieser Array mit folgender Delphi Anweisung ist:
maxn3 ist 9
[CODE]
bedrunter:array[-maxn3..maxn3] of boolean;
[CODE]
Wäre das in c++
[CODE]
bool bedrunter[9];
[CODE
?