<?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[Begrüßung und erste Frage!]]></title><description><![CDATA[<p>Mein Name ist Michael und ich bin 21 Jahre alt.<br />
Früher war ich niemals richtig interessiert an Programmiersprachen.<br />
Doch seit einiger Zeit habe ich große Interesse und habe auch schon die Grundlagen von C &quot;studiert&quot; um die Basis für C++ zu erlangen.<br />
Nun bin ich bei C++ seit einigen Tagen und es ergab sich meine erste (von bestimmt vielen) Fragen. Ich habe ein C++ Buch welches jedoch stark auf die objektorientierte Programmierung für Fortgeschrittene eingeht.<br />
Daher orientiere ich mich eher an Online-Bücher / Tutorials.<br />
Bisher komme ich gut voran und ich mache stets praktische Beispiele um mein neu erworbenes Wissen zu festigen. Derzeit schieße ich über mein &quot;mehrdimensionale Arrays&quot; Beispiel hinaus und versuche eine Art &quot;Schiffe versenken Version selbstgeschrieben&quot;. Aber es ist ja bekanntlich noch kein Meister vom Himmel gefallen! Ich hoffe die Community nimmt mich gut auf und kann mir helfen und ist nicht allzu sauer wenn ich Dinge schreibe, die für euch Kinderkram sind.</p>
<p>Hier mein Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
//#include &lt;time.h&gt;

using namespace std;

const int X=8;
const int Y=8;

int main()
{
  srand(time(NULL));

  int x,y;
  int z;
  char bamx;
  int xkonv;
  int bamy;
  int ende;
  char feld[X][Y];

  int schiffx=(rand()%6+1); //Zufallsschiff definieren im Feld
  int schiffy=(rand()%8+1); //Zufallsschiff definieren im Feld

  for(y=1;y&lt;Y+1;y++)
  {
        for(x=1;x&lt;X+1;x++)
         {
            feld[x][y]='.';
         }
  }

  for (z=0;z&lt;3;z++)
  {
      feld[schiffx+z][schiffy]='o'; //Schiffsfelder mit 'o' füllen  }

  do
  {
  cout&lt;&lt;&quot;\n A B C D E F G H\n&quot;;

  for(y=1;y&lt;Y+1;y++)
  {
        cout&lt;&lt;y;
        for(x=1;x&lt;X+1;x++)
          {
            cout&lt;&lt;feld[x][y]&lt;&lt;&quot; &quot;;
          }
        cout&lt;&lt;&quot;\n&quot;;
  }

  cout&lt;&lt;&quot;\nZielkoordinaten eingeben: &quot;;
  cin&gt;&gt;bamx&gt;&gt;bamy;
  switch(bamx) 
  {
   case 'A' : xkonv=1; break;
   case 'B' : xkonv=2; break;
   case 'C' : xkonv=3; break;
   case 'D' : xkonv=4; break;
   case 'E' : xkonv=5; break;
   case 'F' : xkonv=6; break;
   case 'G' : xkonv=7; break;
   case 'H' : xkonv=8; break;           
  }

  if (bamy==schiffy)
  {
    if  (xkonv==schiffx || xkonv==schiffx+1 || xkonv==schiffx+2)
    {
        cout&lt;&lt;&quot;\nTREFFER\n&quot;;
    }                
  }
  else {cout&lt;&lt;&quot;\nDANEBEN\n&quot;;}

  if (xkonv&gt;0 &amp;&amp; xkonv&lt;9 &amp;&amp; bamy&gt;0 &amp;&amp; bamy&lt;9)
  {
     feld[xkonv][bamy]='x';
  }

  else
  {
     ende=0;
  }

  }
  while(ende!=0);

  getchar();  

}
</code></pre>
<p>Ich weiß nun nicht warum immer wenn ich den Teil mit dem &quot;Zufallsschiff&quot; einbaue immer am Ende des Feldes ein Spade - Zeichen (Wie heißt das bloß in Deutsch beim Kartenspielen.... Treff... Naja egal) kommt.</p>
<p>Der nächste Schritt wäre dann die Anzeige wegzulassen sodass ich selbst natürlich die Schiffe nicht sehen kann und womöglich mehrere einzubauen.<br />
Außerdem Schiffe die nicht nur in X - Richtung erweitert werden.<br />
Aber da fehlt mir noch die Fantasie bzw. fehlen mir noch die Möglichkeiten.</p>
<p>Ich hoffe ich konnte es gut beschreiben und erhalten viele nette Hallo´s und hilfreiche Antworten und ein paar patzige &quot;haha anfänger&quot;. (Sonst wäre ja kein Spaß dabei etwas in ein Forum zu schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286880/begrüßung-und-erste-frage</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 17:17:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286880.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 May 2011 07:53:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 07:53:06 GMT]]></title><description><![CDATA[<p>Mein Name ist Michael und ich bin 21 Jahre alt.<br />
Früher war ich niemals richtig interessiert an Programmiersprachen.<br />
Doch seit einiger Zeit habe ich große Interesse und habe auch schon die Grundlagen von C &quot;studiert&quot; um die Basis für C++ zu erlangen.<br />
Nun bin ich bei C++ seit einigen Tagen und es ergab sich meine erste (von bestimmt vielen) Fragen. Ich habe ein C++ Buch welches jedoch stark auf die objektorientierte Programmierung für Fortgeschrittene eingeht.<br />
Daher orientiere ich mich eher an Online-Bücher / Tutorials.<br />
Bisher komme ich gut voran und ich mache stets praktische Beispiele um mein neu erworbenes Wissen zu festigen. Derzeit schieße ich über mein &quot;mehrdimensionale Arrays&quot; Beispiel hinaus und versuche eine Art &quot;Schiffe versenken Version selbstgeschrieben&quot;. Aber es ist ja bekanntlich noch kein Meister vom Himmel gefallen! Ich hoffe die Community nimmt mich gut auf und kann mir helfen und ist nicht allzu sauer wenn ich Dinge schreibe, die für euch Kinderkram sind.</p>
<p>Hier mein Programm:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
//#include &lt;time.h&gt;

using namespace std;

const int X=8;
const int Y=8;

int main()
{
  srand(time(NULL));

  int x,y;
  int z;
  char bamx;
  int xkonv;
  int bamy;
  int ende;
  char feld[X][Y];

  int schiffx=(rand()%6+1); //Zufallsschiff definieren im Feld
  int schiffy=(rand()%8+1); //Zufallsschiff definieren im Feld

  for(y=1;y&lt;Y+1;y++)
  {
        for(x=1;x&lt;X+1;x++)
         {
            feld[x][y]='.';
         }
  }

  for (z=0;z&lt;3;z++)
  {
      feld[schiffx+z][schiffy]='o'; //Schiffsfelder mit 'o' füllen  }

  do
  {
  cout&lt;&lt;&quot;\n A B C D E F G H\n&quot;;

  for(y=1;y&lt;Y+1;y++)
  {
        cout&lt;&lt;y;
        for(x=1;x&lt;X+1;x++)
          {
            cout&lt;&lt;feld[x][y]&lt;&lt;&quot; &quot;;
          }
        cout&lt;&lt;&quot;\n&quot;;
  }

  cout&lt;&lt;&quot;\nZielkoordinaten eingeben: &quot;;
  cin&gt;&gt;bamx&gt;&gt;bamy;
  switch(bamx) 
  {
   case 'A' : xkonv=1; break;
   case 'B' : xkonv=2; break;
   case 'C' : xkonv=3; break;
   case 'D' : xkonv=4; break;
   case 'E' : xkonv=5; break;
   case 'F' : xkonv=6; break;
   case 'G' : xkonv=7; break;
   case 'H' : xkonv=8; break;           
  }

  if (bamy==schiffy)
  {
    if  (xkonv==schiffx || xkonv==schiffx+1 || xkonv==schiffx+2)
    {
        cout&lt;&lt;&quot;\nTREFFER\n&quot;;
    }                
  }
  else {cout&lt;&lt;&quot;\nDANEBEN\n&quot;;}

  if (xkonv&gt;0 &amp;&amp; xkonv&lt;9 &amp;&amp; bamy&gt;0 &amp;&amp; bamy&lt;9)
  {
     feld[xkonv][bamy]='x';
  }

  else
  {
     ende=0;
  }

  }
  while(ende!=0);

  getchar();  

}
</code></pre>
<p>Ich weiß nun nicht warum immer wenn ich den Teil mit dem &quot;Zufallsschiff&quot; einbaue immer am Ende des Feldes ein Spade - Zeichen (Wie heißt das bloß in Deutsch beim Kartenspielen.... Treff... Naja egal) kommt.</p>
<p>Der nächste Schritt wäre dann die Anzeige wegzulassen sodass ich selbst natürlich die Schiffe nicht sehen kann und womöglich mehrere einzubauen.<br />
Außerdem Schiffe die nicht nur in X - Richtung erweitert werden.<br />
Aber da fehlt mir noch die Fantasie bzw. fehlen mir noch die Möglichkeiten.</p>
<p>Ich hoffe ich konnte es gut beschreiben und erhalten viele nette Hallo´s und hilfreiche Antworten und ein paar patzige &quot;haha anfänger&quot;. (Sonst wäre ja kein Spaß dabei etwas in ein Forum zu schreiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065048</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 07:53:06 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:03:08 GMT]]></title><description><![CDATA[<p>Array-Indices laufen ab 0. Das heißt, mit</p>
<pre><code class="language-cpp">char feld[X][Y];
</code></pre>
<p>definierst du ein Array, das von feld[0][0] bis feld[X - 1][Y - 1] gültig ist. Mit</p>
<pre><code class="language-cpp">for(y=1;y&lt;Y+1;y++)
  {
        cout&lt;&lt;y;
        for(x=1;x&lt;X+1;x++)
          {
            cout&lt;&lt;feld[x][y]&lt;&lt;&quot; &quot;;
          }
        cout&lt;&lt;&quot;\n&quot;;
  }
</code></pre>
<p>läufst du von feld[1][1] bis feld[X][Y] - ersteres ist zwar Speicherverschwendung, aber nicht wirklich problematisch, zweiteres dagegen bedeutet, dass du Speicher ausliest, der nicht mehr zum Array gehört. Das löst undefiniertes Verhalten aus, d.h. alles mögliche kann passieren - in diesem Fall wird vermutlich der Wert einer der anderen Variablen als char interpretiert und ausgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065056</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065056</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Wed, 18 May 2011 08:03:08 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:14:59 GMT]]></title><description><![CDATA[<p>Erstmal Herzlich Willkommen im Forum.<br />
Na dann wollen wir mal <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<ol>
<li>stdlib.h und stdio.h sind C Header, in C++ bindet man stattdessen cstdlib und cstdio ein</li>
<li>Gut, dass du Konstanten mit static const definierst und kein #define dafür benutzt, wie man das in C oft sieht</li>
<li>Variablen werden in C++ möglichst erst dann deklariert, wenn man sie tatsächlich benötigt. Zum guten Stil gehört auch, sie möglichst lokal zu benutzen und bei der Deklaration auch zu initialisieren.</li>
<li>In C/C++ beginnt ein Array mit dem Index 0, nicht mit 1.</li>
<li>Den ganzen switch-case Block kann man sich sparen, wenn man von bamx und bamy 'A' (oder 'a', je nach Groß-/Kleinschreibung) abzieht (siehe ASCII Tabelle und numerische Werte von Buchstaben)</li>
<li>Ist Geschmackssache, aber die Art einzurücken gefällt mir nicht, insbesondere Zeile 74. Man sollte immer einheitlich einrücken (siehe Zeile 74 und 81-84).</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2065059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065059</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 18 May 2011 08:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:15:45 GMT]]></title><description><![CDATA[<p>MichaelMAS schrieb:</p>
<blockquote>
<p>Doch seit einiger Zeit habe ich große Interesse und habe auch schon die Grundlagen von C &quot;studiert&quot; um die Basis für C++ zu erlangen.</p>
</blockquote>
<p>C-Vorkenntnisse können schaden.</p>
<p>Ein paar Anmerkungen:<br />
1. Die &quot;C-Kompatibilitätsheader&quot; werden im C++ Standard mit einem vorgestellten c, und ohne Dateiendung verwendet (z.B. &lt;cstdlib&gt; statt &lt;stdlib.h&gt;). Sie liegen wie die C++ Header im Namensraum std. conio sollte man eigentlich nicht mehr verwenden, und ist auch kein Bestandteil des C++ Standards.<br />
2. Variablen sollte man so lokal wie möglich deklarieren, und möglichst auch direkt initialisieren. Am Besten bei der ersten Verwendung.<br />
3. Bezeichner sollte man so wählen, das die Bedeutung sich beim lesen direkt erschließt. Man liest Code wesentlich häufiger als man ihn schreibt. xkonv, bamx und ähnliches ist jedenfalls nicht lesbar.<br />
4. Zählvariablen von for-Schleigen würde ich auch erst in dieser deklarieren, wenn man nicht das Endergebnis der Schleife anderweitig benötigt. Wiederverwendung von Variablen gilt eigentlich als schlechter Stil (Und da eine im for deklarierte Variable nur lokal gilt, kann man den gleichen Bezeichner auch später nochmal für eine lokale Variable nutzen).</p>
<p>MichaelMAS schrieb:</p>
<blockquote>
<p>Ich habe ein C++ Buch welches jedoch stark auf die objektorientierte Programmierung für Fortgeschrittene eingeht.</p>
</blockquote>
<p>Darf ich erst einmal fragen welches?</p>
<p>MichaelMAS schrieb:</p>
<blockquote>
<p>Daher orientiere ich mich eher an Online-Bücher / Tutorials.</p>
</blockquote>
<p>Ich kenne kaum ein gutes Tutorial für C++.</p>
<p>Leider fehlt mir für eine genauere Analyse deines Programms aber die Zeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065063</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 May 2011 08:15:45 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:25:51 GMT]]></title><description><![CDATA[<p>Hallo Michael,<br />
ich hätte nur ein paar Randbemerkungen (da das urpsürngliche Problem gelöst wurde). Es ist eine relativ verbreitete Ansicht, dass man gerade bei C++ die objektorientierte Programmierung so früh wie möglich lernen soll, um sich nicht in der prozeduralen Programmierung zu verfangen. Man sollte nicht gleich zu einem Buch für Fortgeschrittene greifen, aber wenn am Anfang OOP kommt und Unklarheiten entstehen, dann sollte man das Buch nicht gleich zur Seite legen und stattdessen (oftmals fragwürdige) Tutorials nehmen. In diesem Forum findest du viele Beiträge, in denen Bücher bewertet sind und gute Bücher empfohlen werden.</p>
<p>Bei der Deklaration kannst du die Variablen vom gleichen Typ in einer Zeile deklarieren (hast ja bei int schon teilweise gemacht). Die geschweiften Klammern bei einzeiligen Befehlen (z.B. nach if und else) kannst du auch weglassen (wenn sie weggelassen werden, wird nur die nächste Zeile interpretiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065072</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Wed, 18 May 2011 08:25:51 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:29:14 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>1. Die &quot;C-Kompatibilitätsheader&quot; werden im C++ Standard mit einem vorgestellten c, und ohne Dateiendung verwendet (z.B. &lt;cstdlib&gt; statt &lt;stdlib.h&gt;). Sie liegen wie die C++ Header im Namensraum std.</p>
</blockquote>
<p>Wieso funktioniert das hier eigentlich:</p>
<pre><code class="language-cpp">#include &lt;cstdio&gt;

int main()
{
    printf(&quot;Hallo\n&quot;);
}
</code></pre>
<p>wenn printf im Namensraum std liegt? (VSE2009)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065075</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 18 May 2011 08:29:14 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:41:53 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Wieso funktioniert das hier eigentlich:<br />
...<br />
wenn printf im Namensraum std liegt? (VSE2009)</p>
</blockquote>
<p>VSE2009 kenne ich zwar nicht (wenn 2008 oder 2010), aber wenn mein Englisch nicht sehr schlecht ist, würde ich aus dem Draft es so lesen, das der VSE hier nicht ganz richtig ist.</p>
<p>[Auszug aus 17.4.1.2 §4, ]<br />
&quot;...In the C++ Standard Library, however, the declarations and definitions except for names which are defined as macros in C) are within namespace scope (3.3.5) of the namespace std.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065083</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 18 May 2011 08:41:53 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:46:16 GMT]]></title><description><![CDATA[<p>Also:<br />
Ich habe alle Beiträge bisher durchgelesen und soweit jetzt wie es mir möglich ist.<br />
Was soll ich sagen:</p>
<ol>
<li>Das ist durch die Optimierungen kürzer und übersichtlicher geworden.<br />
(Stichwörter Switch/Else, Deklarierungen in einer Zeile, Geschwungene Klammern, Codestruktur,etc..)</li>
<li>Das Programm funktioniert!<br />
(Stichwort Zugriff auf Teil des Arrays der nicht mehr dazugehört)</li>
<li>Die Bibliotheken habe ich ohne Header .h und mit c davor und conio lasse ich weg!</li>
</ol>
<p>Das Buch werde ich sobald ich kann hier mit Titel und Autor angeben.<br />
Ich habe es zwar beiseite gelegt aber keineswegs verworfen!</p>
<p>Bezüglich Tutorials verwende ich 2 die hier unter Neulingshilfe und Links angegeben sind und Wikibooks C++.</p>
<p>Das mit dem Switch/Else weglassen und stattdessen A abziehen hat nach kurzer Recherche wie das genau gemeint war funktioniert, aber genau verstehe ich nicht wie ich von einer int Zahl einfach 'A' abziehen kann.</p>
<pre><code class="language-cpp">cout&lt;&lt;&quot;\nZielkoordinaten eingeben: &quot;;
  cin&gt;&gt;bamx&gt;&gt;bamy;
  konvx=bamx - 'A';
  konvy=bamy - '1';
</code></pre>
<p>Aber es funktioniert!</p>
<p>Eine Frage noch:<br />
Die geschwungenen Klammern bei einzeiligen zb. if else Bedingungen weglassen verstehe ich, aber ích sehe keine Möglichkeit das in meinem Code zu nutzen, da alles eigentlich immer länger als eine Zeile ist!<br />
Oder meintest du damit, dass ich es öfters ruhig auf eine Zeile verkürzen sollte bei einfachen Anwendungen???</p>
<p>lg und danke an alle auch wenn ich nicht alle beim Namen nenne!</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065086</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 08:46:16 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 08:47:53 GMT]]></title><description><![CDATA[<p>Huhu Michael,<br />
mir sind bei deinem Post gerade ein paar andere Dinge aufgefallen, die ich dir gerne mitteilen würde <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>MichaelMAS schrieb:</p>
<blockquote>
<p>Grundlagen von C &quot;studiert&quot; um die Basis für C++ zu erlangen.</p>
</blockquote>
<p>Wenn man C++ erlernen will erstmal C zu machen... davon wird i.A. abgeraten,da C und C++ doch etwas andere Paradigmen verfolgen. Sieht man z.B. an ein paar Dingen in deinem Quellcode.</p>
<p>MichaelMAS schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
</code></pre>
</blockquote>
<p>In C++ gibt es eine &quot;Neuauflage&quot; gewisser Headern, und diese enden nicht mehr auf '.h' sondern bekommen ein 'c' vornehin, wie z.B. 'cstdio'</p>
<p>MichaelMAS schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const int X=8;
const int Y=8;
</code></pre>
</blockquote>
<p>Die Philosophie von C++ ist, Variablen/Objekte so lokal wie möglich zu halten und so spät wie möglich zu definieren (am besten eine Initialisierung, falls möglich)</p>
<p>MichaelMAS schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char feld[X][Y];
</code></pre>
</blockquote>
<p>Wenn es geht, vermeidet man in C++ 'normale', 'rohe' Arrays und benutzt stattdessen sog. Conatiner. Wenn man nicht weiß, welcher nun der Geeignete ist, nimmt man immer <em>std::vector</em>.</p>
<p>MichaelMAS schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int x,y;
char feld[X][Y];
</code></pre>
</blockquote>
<p>Normal müsste dies einen Fehler verursachen, da man für nicht-dynamische Arrays als Größenangabe eine Compiletime-Konstante benutzen muss (also eine Zahl, die zur Kompilation bekannt ist und konstant ist):</p>
<pre><code class="language-cpp">char ar[7];

// oder
const int size = 7;
char ar_2[size];
</code></pre>
<p>PS: Ich finde es gut, dass du versuchst einzurücken, aber versuche die &quot;Einrückgröße&quot; konstant zu halten, das macht es dann noch etwas leserlicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065088</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 18 May 2011 08:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 09:03:38 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20068">@Michael</a>: Ich meinte das so:</p>
<pre><code class="language-cpp">if (bamy==schiffy)
  {
    if  (xkonv==schiffx || xkonv==schiffx+1 || xkonv==schiffx+2)
        cout&lt;&lt;&quot;\nTREFFER\n&quot;;         //Klammer weg
  }
  else {cout&lt;&lt;&quot;\nDANEBEN\n&quot;;}

  if (xkonv&gt;0 &amp;&amp; xkonv&lt;9 &amp;&amp; bamy&gt;0 &amp;&amp; bamy&lt;9)
     feld[xkonv][bamy]='x';         //Klammer weg

  else
     ende=0;         //Klammer weg
</code></pre>
<p>Mit for-Schleifen kann man das auch machen (solange die zu dieser Schleife gehörende Prozedur eine Zeile umfasst).</p>
<p>Grüße,<br />
Rewind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065095</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Wed, 18 May 2011 09:03:38 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 09:04:45 GMT]]></title><description><![CDATA[<p>Besonders die Tips mit dem leserlicher sind für mich wichtig, da ich als kleiner Chaot sonst nicht mehr klar komme. Auch die Bezeichnungen sollten schreien förmlich wozu die variablen da sind!<br />
Dafür erstmal danke!</p>
<p>Dann habe ich soweit einiges eingebaut schon, aber eine Frage ergibt sich.<br />
Ich weiß zwar wie ich den Fehler ausbessere aber wieso ich ihn ausbessern muss damit alles funktioniert weiß ich nicht. Also: Was ist daran falsch?</p>
<pre><code class="language-cpp">do
  {
  cout&lt;&lt;&quot;\n A B C D E F G H\n&quot;;

  for(y=0;y&lt;Y;y++)
  {
        cout&lt;&lt;y+1;
        for(x=0;x&lt;X;x++)
          {
            cout&lt;&lt;feld[x][y]&lt;&lt;&quot; &quot;;
          }
        cout&lt;&lt;&quot;\n&quot;;
  }

  cout&lt;&lt;&quot;\nZielkoordinaten eingeben: &quot;;
  cin&gt;&gt;bamx&gt;&gt;bamy;
  konvx=bamx - 'A';
  konvy=bamy - '1';

  if (konvx&gt;0 &amp;&amp; konvx&lt;9 &amp;&amp; konvy&gt;0 &amp;&amp; konvy&lt;9) //Hier liegt der Hund begraben!
  {
     feld[konvx][konvy]='-';
     if (konvy==schiffy)
     {
        if  (konvx==schiffx || konvx==schiffx+1 || konvx==schiffx+2)
        {
           feld[konvx][konvy]='x';
           cout&lt;&lt;&quot;\nTREFFER\n&quot;;
        }                
     }
     else {cout&lt;&lt;&quot;\nDANEBEN\n&quot;;}
  }
  else
  {
     ende=0;
  }

  }
  while(ende!=0);
</code></pre>
<p>Wenn ich dann:</p>
<pre><code class="language-cpp">if (konvx&gt;0 &amp;&amp; konvx&lt;9 &amp;&amp; konvy&gt;0 &amp;&amp; konvy&lt;9)
</code></pre>
<p>funktioniert es wieder auch wenn ich zb. A1 eingebe!</p>
<p>Why????</p>
<p>Also das feld auch erst definieren, wenn man es wirklich braucht!<br />
Werd ich machen und mir merken!</p>
<p>Gugelmoser eine Frage zum letzten Ding:</p>
<p><em>Normal müsste dies einen Fehler verursachen, da man für nicht-dynamische Arrays als Größenangabe eine Compiletime-Konstante benutzen muss (also eine Zahl, die zur Kompilation bekannt ist und konstant ist):</em><br />
...</p>
<p>Wieso?</p>
<p>Ich habe doch:</p>
<pre><code class="language-cpp">const int X=8;
const int Y=8;
...
char feld[X][Y];

DANKE WIEDER MAL AN ALLE UND BIS GLEICH :D
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065096</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 09:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 09:05:52 GMT]]></title><description><![CDATA[<p>Tschuldigung:<br />
Bei:</p>
<pre><code class="language-cpp">if (konvx&gt;0 &amp;&amp; konvx&lt;9 &amp;&amp; konvy&gt;0 &amp;&amp; konvy&lt;9)
</code></pre>
<p>gehts natürlich nicht, wäre ja das gleich!</p>
<p>Bei:</p>
<pre><code class="language-cpp">if (konvx&gt;=0 &amp;&amp; konvx&lt;9 &amp;&amp; konvy&gt;=0 &amp;&amp; konvy&lt;9)
</code></pre>
<p>gehts dann!<br />
Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065097</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 09:05:52 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 09:24:15 GMT]]></title><description><![CDATA[<p>MichaelMAS schrieb:</p>
<blockquote>
<p>Bei:</p>
<pre><code class="language-cpp">if (konvx&gt;=0 &amp;&amp; konvx&lt;9 &amp;&amp; konvy&gt;=0 &amp;&amp; konvy&lt;9)
</code></pre>
<p>gehts dann!<br />
Wieso?</p>
</blockquote>
<p>Weil 0 in diesem Fall auch mögliche Werte für konvx und konvy ist. 'A' ist als 65 kodiert und wenn man 'A' (65) eingibt und danach von der Eingabe 'A' (65) abgezogen wird, kommt eine 0 raus.</p>
<p>Gugelmoser schrieb:</p>
<blockquote>
<p>Normal müsste dies einen Fehler verursachen, da man für nicht-dynamische Arrays als Größenangabe eine Compiletime-Konstante benutzen muss (also eine Zahl, die zur Kompilation bekannt ist und konstant ist):</p>
</blockquote>
<p>Das stimmt nicht, weil sie bekannt sind. Gugelmoser hat sich vermutlich verguckt. Du könntest dir noch andere Variablennamen für die for-Schleifen, in den du x und y (klein) verwendest, überlegen (z.B. i und j) damit es nicht zu Verwechslungen kommt. Oder deine globalen Konstanten anders nennen (XMAX bzw. YMAX oder so)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065106</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Wed, 18 May 2011 09:24:15 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 09:26:28 GMT]]></title><description><![CDATA[<p>MichaelMAS schrieb:</p>
<blockquote>
<p>Gugelmoser eine Frage zum letzten Ding:</p>
<p><em>Normal müsste dies einen Fehler verursachen, da man für nicht-dynamische Arrays als Größenangabe eine Compiletime-Konstante benutzen muss (also eine Zahl, die zur Kompilation bekannt ist und konstant ist):</em></p>
</blockquote>
<p>Stimmt, haste recht, da habe ich wohl ein kleines x statt ein großes gelesen. Da siehst du auch gerade, dass man Namen wohl besser nicht klein und groß geschrieben verwenden sollte, da man schnell mal durcheinander kommt. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065107</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 18 May 2011 09:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 09:40:28 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Belli schrieb:</p>
<blockquote>
<p>Wieso funktioniert das hier eigentlich:<br />
...<br />
wenn printf im Namensraum std liegt? (VSE2009)</p>
</blockquote>
<p>VSE2009 kenne ich zwar nicht (wenn 2008 oder 2010), aber wenn mein Englisch nicht sehr schlecht ist, würde ich aus dem Draft es so lesen, das der VSE hier nicht ganz richtig ist.</p>
</blockquote>
<p>Du hast natürlich recht: VSE2008 (Visual C++ 9.0) ... aber ...<br />
mein g++ (3.4.5) übersetzt es auch ohne Murren ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065120</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 18 May 2011 09:40:28 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 09:42:00 GMT]]></title><description><![CDATA[<p>So wie ich das sehe, hast du ein 8x8 Feld. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">if (xkonv&gt;0 &amp;&amp; xkonv&lt;9 &amp;&amp; bamy&gt;0 &amp;&amp; bamy&lt;9)
     feld[xkonv][bamy]='x'; // feld[8][8] könnte entstehen... Speicherzugriffsverletzung
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065121</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 18 May 2011 09:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 10:03:10 GMT]]></title><description><![CDATA[<p>Toll!<br />
Jetzt verstehe ich das mit dem einzeiligen Befehl bei if/else bzw. bei einer for schleife! Bau ich ein, das spart dann wieder Platz!</p>
<p>Das mit dem A(ASCII 65) ist mir auch klar. Denn wenn 0 rauskommt und bei 0 bricht die Schleife ab --&gt; Klar das es nicht funktioniert!</p>
<p>DANKE DERWEIL!</p>
<p>Dieses Programm ist derweil mal soweit erledigt und meine Fragen geklärt!</p>
<p>Ihr seid alle miteinander toll und ich hoffe nächstes mal kann ich ein bereits &quot;optimierteres&quot; Programm an euch übergeben um etwaige Fragen zu stellen!</p>
<p>lg</p>
<p>Michael</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065145</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 10:03:10 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 10:10:38 GMT]]></title><description><![CDATA[<p>Mein Programm jetzt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;cstdio&gt;
#include &lt;time.h&gt;

using namespace std;

const int X=8;
const int Y=8;

int main()
{
  srand(time(NULL));

  int x,y,z,konvx,konvy,ende;
  char bamx,bamy,feld[X][Y];
  int schiffx=(rand()%6);
  int schiffy=(rand()%8);

  for(y=0;y&lt;Y;y++)
  {
        for(x=0;x&lt;X;x++)
            feld[x][y]='.';
  }

  for (z=0;z&lt;3;z++)
       feld[schiffx+z][schiffy]='o';

  do
  {
     cout&lt;&lt;&quot;\n A B C D E F G H\n&quot;;
     for(y=0;y&lt;Y;y++)
     {
        cout&lt;&lt;y+1;
        for(x=0;x&lt;X;x++)
            cout&lt;&lt;feld[x][y]&lt;&lt;&quot; &quot;;
        cout&lt;&lt;&quot;\n&quot;;
  }

  cout&lt;&lt;&quot;\nZielkoordinaten eingeben: &quot;;
  cin&gt;&gt;bamx&gt;&gt;bamy;
  konvx=bamx - 'A';
  konvy=bamy - '1';

  if (konvx&gt;=0 &amp;&amp; konvx&lt;9 &amp;&amp; konvy&gt;=0 &amp;&amp; konvy&lt;9)
  {
     feld[konvx][konvy]='-';
     if (konvy==schiffy)
     {
        if  (konvx==schiffx || konvx==schiffx+1 || konvx==schiffx+2)
             feld[konvx][konvy]='x'; cout&lt;&lt;&quot;\nTREFFER\n&quot;;
     }
     else {cout&lt;&lt;&quot;\nDANEBEN\n&quot;;}
  }
  else
  {
     ende=0;
  }
  }
  while(ende!=0);
  getchar();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065148</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 10:10:38 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 10:51:49 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Du hast natürlich recht: VSE2008 (Visual C++ 9.0) ... aber ...<br />
mein g++ (3.4.5) übersetzt es auch ohne Murren ...</p>
</blockquote>
<p>GCC G++ 4.3.4 murrt.<br />
CodeGear 2009 murrt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065180</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065180</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Wed, 18 May 2011 10:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 10:56:22 GMT]]></title><description><![CDATA[<p>Es tut mir leid, wenn ich mich missverständlich ausgedrückt habe. Mein Hinweis bezog sich weniger auf eine Zeile, sondern mehr auf eine Prozedur bzw. Anweisung, denn in einer Zeile können auch mehrere Prozeduren zusammengepresst werden, von denen nur die erste von der <code>for</code> -Schleife bzw. <code>if</code> -und <code>else</code> -Überprüfung ausgewertet wird. D.h., wenn man das so schreibt:</p>
<pre><code class="language-cpp">if  (konvx==schiffx || konvx==schiffx+1 || konvx==schiffx+2)
             feld[konvx][konvy]='x'; cout&lt;&lt;&quot;\nTREFFER\n&quot;;
</code></pre>
<p>dann wird nur <code>feld[konvx][konvy]='x';</code> ausgeführt, wenn eine der if-Bedingungen zutreffen. In diesem Fall gibt es zwei Anweinsungen (Wertzuweisung und cout), die in geschweifte Klammer gepackt werde sollten.</p>
<p>Eins solltest du noch wissen: C++-Standard schreibt vor, dass die <code>int main()</code> -Funktion einen Rückgabewert zurückgeben muss. Wenn sie nicht 0 zurückgibt, wird die Ausführung vom System als fehlerhaft interpretiert.</p>
<p>Nochmal zu</p>
<pre><code class="language-cpp">if (konvx&gt;=0 &amp;&amp; konvx&lt;9 &amp;&amp; konvy&gt;=0 &amp;&amp; konvy&lt;9)
</code></pre>
<p>Da dein Array 8 Elemente hat, geht der Index von 0 bis 7. Für deine if-Überprüfung heißt es:</p>
<pre><code class="language-cpp">if (konvx&gt;=0 &amp;&amp; konvx&lt;8 &amp;&amp; konvy&gt;=0 &amp;&amp; konvy&lt;8)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065184</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Wed, 18 May 2011 10:56:22 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 11:03:30 GMT]]></title><description><![CDATA[<p>Das mit dem &lt;8 habe ich noch vergessen vorhin, stimmt --&gt;DANKE</p>
<p>Aber das mit dem nur die erste Anweisung wird ausgeführt bzw. umgesetzt verstehe ich zwar, aber bei mir funktioniert es trotzdem.</p>
<pre><code class="language-cpp">if  (konvx==schiffx || konvx==schiffx+1 || konvx==schiffx+2)
             feld[konvx][konvy]='x'; cout&lt;&lt;&quot;\nTREFFER\n&quot;;
</code></pre>
<p>Aber Treffer wird immer angezeigt!</p>
<p>Was stimmt jetzt? Oder liegt das daran, dass ich DEV C++ verwende?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065188</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 11:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 11:12:59 GMT]]></title><description><![CDATA[<p>MichaelMAS schrieb:</p>
<blockquote>
<p>Aber Treffer wird immer angezeigt!</p>
</blockquote>
<p>Genau. Das liegt aber nicht am Compiler, sondern daran, dass nur die erste Anweisung durchgeführt wird, wenn if(...) zutrifft. Das bedeutet, dass &quot;cout&quot; unabhängig von if ausgeführt wird. Dazu müsstest du die Klammern setzen (weil es zwei Befehle sind, jeder endet ja mit Semikolon &quot;;&quot;):</p>
<pre><code class="language-cpp">if  (konvx==schiffx || konvx==schiffx+1 || konvx==schiffx+2)
        {
             feld[konvx][konvy]='x'; 
             cout&lt;&lt;&quot;\nTREFFER\n&quot;; 
        }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065196</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Wed, 18 May 2011 11:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 11:19:06 GMT]]></title><description><![CDATA[<p>Stimmt!<br />
Ja du hattest recht!</p>
<p>Jetzt versteh ichs!</p>
<p>Hab übersehen das immer TREFFER kommt auch wenn ich nicht treffe!</p>
<p>DANKE</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065200</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 11:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 11:22:39 GMT]]></title><description><![CDATA[<p>Die lokale Benutzung von Variablen und die Initialisierung solltest du noch umsetzen. Un für meinen Geschmack könnte an manchen Stellen ein Leerzeichen für bessere Lesbarkeit sorgen.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
#include &lt;cstdlib&gt; 
#include &lt;cstdio&gt; 
#include &lt;ctime&gt;  // statt time.h

using namespace std; 

const int X=8; 
const int Y=8; 

int main() 
{ 
  srand(time(NULL)); 

  char feld[X][Y]; 
  int schiffx=(rand()%6); 
  int schiffy=(rand()%8); 

  for( unsigned int y = 0; y &lt; Y; y++) // lokale Zählvariable y
  {
      for( unsigned int x = 0; x &lt; X; x++) // lokale Zählvariable x
      {
         feld[x][y]='.'; 
      }
  }
  for( unsigned int z = 0; z &lt; 3; z++) // lokale Zählvariable z
  {
     feld[schiffx+z][schiffy]='o';  
  }

  bool Ende = false;
  do 
  { 
     cout&lt;&lt;&quot;\n A B C D E F G H\n&quot;; 
     for( unsigned int y = 0; y &lt; Y; y++) // lokale Zählvariable y
     { 
        cout&lt;&lt;y+1; 
        for( unsigned int x = 0; x &lt; X; x++) // lokale Zählvariable x
        {
            cout&lt;&lt;feld[x][y]&lt;&lt;&quot; &quot;; 
        }
        cout&lt;&lt;&quot;\n&quot;; 
     } 

     cout&lt;&lt;&quot;\nZielkoordinaten eingeben: &quot;; 
     int bamx = 0; // bamx, bamy werden erst hier benötigt, also auch erst hier definieren
     int bamy = 0; 
     cin&gt;&gt;bamx&gt;&gt;bamy; 
     int konvx=bamx - 'A'; // siehe bamx, bamy
     int konvy=bamy - '1'; 

     if( konvx &gt;= 0 &amp;&amp; konvx &lt; 9 &amp;&amp; konvy &gt;= 0 &amp;&amp; konvy &lt; 9 ) 
     { 
        feld[konvx][konvy]='-'; 
        if( konvy==schiffy ) 
        {
           if( konvx==schiffx || konvx==schiffx+1 || konvx==schiffx+2 ) 
           {
              feld[konvx][konvy]='x'; cout&lt;&lt;&quot;\nTREFFER\n&quot;; 
           }
           else 
           {
              cout&lt;&lt;&quot;\nDANEBEN\n&quot;;
           }
        }
     } 
     else 
     { 
        Ende = true; 
     } 
  } 
  while( !Ende ); 
  getchar(); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2065203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065203</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 18 May 2011 11:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 11:25:54 GMT]]></title><description><![CDATA[<p>Ah..</p>
<p>Bin wohl bei den ganzen Vorschlägen bei dem hier auf der Leitung gestanden.<br />
Das erleichtert die Auswahl an Zählern ungemein und man kommt nicht so leicht durcheinander! Diese unsigned int variablen sind also nur zum zählen und können daher zuvor undefiniert aufgerufen werden!<br />
Toll!<br />
Und dann kann ich doch zb. für alle for-Schleifen unsigned i verwenden, oder?<br />
Ich definiere ja immer nur für eine Schleife und nicht global davor!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065205</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 11:25:54 GMT</pubDate></item><item><title><![CDATA[Reply to Begrüßung und erste Frage! on Wed, 18 May 2011 11:29:49 GMT]]></title><description><![CDATA[<p>und die Idee mit der boolschen Variable ist auch gut!<br />
Wozu sonst sind True/False da!<br />
Dieses Programm ist ja förmlich prädestiniert um zu veranschaulichen wie man das verwenden kann in c++ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2065207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2065207</guid><dc:creator><![CDATA[MichaelMAS]]></dc:creator><pubDate>Wed, 18 May 2011 11:29:49 GMT</pubDate></item></channel></rss>