<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Wegfindung in Delphi und C++]]></title><description><![CDATA[<p>Ich muss in einem Programm einen Weg finden. Gegeben sind:</p>
<pre><code class="language-cpp">const Anzahl = 5; // Fünf Punkte, jeder könnte mit jedem verbunden sein
BOOL Relation[6][6];  // Existiert eine Verbindung?
Relation[1][3] = TRUE;  // Es gibt einen Weg von 1 nach 3
Relation[3][5] = TRUE;  // Es gibt einen Weg von 3 nach 5
</code></pre>
<p>Es geht nicht darum, den kürzesten Weg zu finden, sondern die zu schreibende Funktion soll lediglich herausfinden, ob ein Weg existiert. Meine Funktion sieht so aus:</p>
<pre><code class="language-cpp">BOOL __fastcall TfrmFormular::Weg(INT Start, INT Ziel)
{
  BOOL Kontrolliert[99], Verbindung[99], b;

  Verbindung[Start] = TRUE;
  Kontrolliert[Ziel] = TRUE;

  for (INT i=0; i&lt;= Anzahl; i++)
  {
  	for (INT j=0; j&lt;= Anzahl; j++)
    {
      if ((Verbindung[j]) &amp;&amp; (!Kontrolliert[j]))
      {
      	Kontrolliert[j] = TRUE;
        for (INT k=0; k&lt;= Anzahl; k++)
        {
        	if (Relation[j][k])
          {
          	Verbindung[k] = TRUE;
            if (k == Ziel)
              b = TRUE;
          }
        }
      }
    }
  }
  return b;
}
</code></pre>
<p>Die Funktion funktioniert nicht, ich habe keine Ahnung warum. Der gleiche Quelltext in Delphi:</p>
<pre><code>function Weg(Start,Ziel:integer):boolean;
var
  Kontrolliert, Verbindung: array[0..99] of boolean;
  b:boolean;
  i,j,k:integer;
begin
  Verbindung[Start] := TRUE;
  Kontrolliert[Ziel] := TRUE;

  for i:=1 to Anzahl do
  begin
    for j:=1 to Anzahl do
    begin
      if ((Verbindung[j]) and ( not Kontrolliert[j])) then
      begin
        Kontrolliert[j] := TRUE;
        for k:=1 to Anzahl do
        begin
          if (Relation[j][k]) then
          begin
            Verbindung[k] := TRUE;
            if (k = Ziel) then
            begin
              b := TRUE;
            end
          end;
        end;
      end;
    end;
  end;
  Weg := b;
end;
</code></pre>
<p>Diese Funktion funktioniert. Warum nur <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/91202/wegfindung-in-delphi-und-c</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 07:47:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/91202.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 06 Nov 2004 01:32:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wegfindung in Delphi und C++ on Sat, 06 Nov 2004 01:32:47 GMT]]></title><description><![CDATA[<p>Ich muss in einem Programm einen Weg finden. Gegeben sind:</p>
<pre><code class="language-cpp">const Anzahl = 5; // Fünf Punkte, jeder könnte mit jedem verbunden sein
BOOL Relation[6][6];  // Existiert eine Verbindung?
Relation[1][3] = TRUE;  // Es gibt einen Weg von 1 nach 3
Relation[3][5] = TRUE;  // Es gibt einen Weg von 3 nach 5
</code></pre>
<p>Es geht nicht darum, den kürzesten Weg zu finden, sondern die zu schreibende Funktion soll lediglich herausfinden, ob ein Weg existiert. Meine Funktion sieht so aus:</p>
<pre><code class="language-cpp">BOOL __fastcall TfrmFormular::Weg(INT Start, INT Ziel)
{
  BOOL Kontrolliert[99], Verbindung[99], b;

  Verbindung[Start] = TRUE;
  Kontrolliert[Ziel] = TRUE;

  for (INT i=0; i&lt;= Anzahl; i++)
  {
  	for (INT j=0; j&lt;= Anzahl; j++)
    {
      if ((Verbindung[j]) &amp;&amp; (!Kontrolliert[j]))
      {
      	Kontrolliert[j] = TRUE;
        for (INT k=0; k&lt;= Anzahl; k++)
        {
        	if (Relation[j][k])
          {
          	Verbindung[k] = TRUE;
            if (k == Ziel)
              b = TRUE;
          }
        }
      }
    }
  }
  return b;
}
</code></pre>
<p>Die Funktion funktioniert nicht, ich habe keine Ahnung warum. Der gleiche Quelltext in Delphi:</p>
<pre><code>function Weg(Start,Ziel:integer):boolean;
var
  Kontrolliert, Verbindung: array[0..99] of boolean;
  b:boolean;
  i,j,k:integer;
begin
  Verbindung[Start] := TRUE;
  Kontrolliert[Ziel] := TRUE;

  for i:=1 to Anzahl do
  begin
    for j:=1 to Anzahl do
    begin
      if ((Verbindung[j]) and ( not Kontrolliert[j])) then
      begin
        Kontrolliert[j] := TRUE;
        for k:=1 to Anzahl do
        begin
          if (Relation[j][k]) then
          begin
            Verbindung[k] := TRUE;
            if (k = Ziel) then
            begin
              b := TRUE;
            end
          end;
        end;
      end;
    end;
  end;
  Weg := b;
end;
</code></pre>
<p>Diese Funktion funktioniert. Warum nur <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/645873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/645873</guid><dc:creator><![CDATA[snOOfy]]></dc:creator><pubDate>Sat, 06 Nov 2004 01:32:47 GMT</pubDate></item><item><title><![CDATA[Reply to Wegfindung in Delphi und C++ on Sat, 06 Nov 2004 04:47:12 GMT]]></title><description><![CDATA[<p>Du hast also eine lauffähige version in pascal, und in C++ läuft die nicht..</p>
<p>Der teufel steckt im Detail...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/645886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/645886</guid><dc:creator><![CDATA[TrueSight]]></dc:creator><pubDate>Sat, 06 Nov 2004 04:47:12 GMT</pubDate></item><item><title><![CDATA[Reply to Wegfindung in Delphi und C++ on Sat, 06 Nov 2004 07:58:03 GMT]]></title><description><![CDATA[<p>Aber es ist doch alles genau gleich!<br />
Ich hatte erst die c++ version. Weil die nicht richtig funktioniert hat, habe ich sie in delphi übersetzt. Dort gab es keine Schwierigkeiten.</p>
<p>Oder findet doch wer nen unterschied? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/645906</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/645906</guid><dc:creator><![CDATA[snOOfy]]></dc:creator><pubDate>Sat, 06 Nov 2004 07:58:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wegfindung in Delphi und C++ on Sat, 06 Nov 2004 08:59:56 GMT]]></title><description><![CDATA[<p>Die Schleifenvariablen i und j fangen in Delphi bei 1 an, in C habt ihr sie bei 0 beginnen lassen. Vielleicht mal darüber nachdenken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/645925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/645925</guid><dc:creator><![CDATA[Peter]]></dc:creator><pubDate>Sat, 06 Nov 2004 08:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wegfindung in Delphi und C++ on Sat, 06 Nov 2004 09:11:40 GMT]]></title><description><![CDATA[<p>Ich hab es rausgefunden. Der Fehler liegt in dieser Zeile:</p>
<pre><code class="language-cpp">BOOL Kontrolliert[99], Verbindung[99], b;
</code></pre>
<p>In b steht nicht, wie ich erwartet hätte, ein FALSE, sondern irgend eine Zahl. So funktioniert es:</p>
<pre><code class="language-cpp">BOOL Kontrolliert[99], Verbindung[99], b = FALSE;
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/645930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/645930</guid><dc:creator><![CDATA[snOOfy]]></dc:creator><pubDate>Sat, 06 Nov 2004 09:11:40 GMT</pubDate></item></channel></rss>