<?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[Frage zu Suche]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also, ich habe ein vector&lt;string&gt;. Mit</p>
<pre><code class="language-cpp">vector&lt;string&gt; map;
 for (size_t i = 0; i &lt;20; i++) map.push_back(&quot;++++++++++++++++++++&quot;);
</code></pre>
<p>diesem inhalt.</p>
<p>so, nun packe ich auf einen von den chars ein 'p'.<br />
sieht so aus:</p>
<pre><code class="language-cpp">int write_map ( int x, int y, char inhalt ) {
    //inhalt auf koordinaten schreiben
    map[x][y] = inhalt;
    return 0;
}
write_map (0, 0, 'p');
</code></pre>
<p>und nun kommt mein problem:<br />
ich weiß nicht richtig, wie ich das p jetzt finden kann...</p>
<p>ich habe das hier:</p>
<pre><code class="language-cpp">int i, k = 0;
    while (i != 19) {
          while ( k != 19 ) {
                input = map[i][k];
                if (input == 'p') {
                          break;
                          }
                k++;
                }
          k = 0;
          i++;
          }
</code></pre>
<p>aber damit stürzt das programm ab...</p>
<p>was muss ich verändern, dass die schleife das macht, was ich will?</p>
<p>greetz, hokage (not logged )</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/185073/frage-zu-suche</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 01:18:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185073.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Jun 2007 15:44:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 15:44:58 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Also, ich habe ein vector&lt;string&gt;. Mit</p>
<pre><code class="language-cpp">vector&lt;string&gt; map;
 for (size_t i = 0; i &lt;20; i++) map.push_back(&quot;++++++++++++++++++++&quot;);
</code></pre>
<p>diesem inhalt.</p>
<p>so, nun packe ich auf einen von den chars ein 'p'.<br />
sieht so aus:</p>
<pre><code class="language-cpp">int write_map ( int x, int y, char inhalt ) {
    //inhalt auf koordinaten schreiben
    map[x][y] = inhalt;
    return 0;
}
write_map (0, 0, 'p');
</code></pre>
<p>und nun kommt mein problem:<br />
ich weiß nicht richtig, wie ich das p jetzt finden kann...</p>
<p>ich habe das hier:</p>
<pre><code class="language-cpp">int i, k = 0;
    while (i != 19) {
          while ( k != 19 ) {
                input = map[i][k];
                if (input == 'p') {
                          break;
                          }
                k++;
                }
          k = 0;
          i++;
          }
</code></pre>
<p>aber damit stürzt das programm ab...</p>
<p>was muss ich verändern, dass die schleife das macht, was ich will?</p>
<p>greetz, hokage (not logged )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310820</guid><dc:creator><![CDATA[learning c++]]></dc:creator><pubDate>Thu, 21 Jun 2007 15:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 15:49:12 GMT]]></title><description><![CDATA[<p>das break springt nur aus der innersten Schleife (while(k)) heraus, aber die äußere läuft trotzdem noch weiter und muß noch extra abgebrochen werden.</p>
<p>(das ist eine der wenigen Situationen, wo ich über ein goto nachdenken würde)</p>
<p>PS: Übrigens solltest du lieber die tatsächliche Größe des Feldes (map.size() bzw. map[i].size()) als Endekriterium verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310825</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 21 Jun 2007 15:49:12 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 15:51:41 GMT]]></title><description><![CDATA[<p>also sozusagen:</p>
<pre><code class="language-cpp">int i, k = 0;
    while (i &gt; map.size()) {
          while ( k &gt; map[i].size() ) {
                input = map[i][k];
                if (input == 'p') {
                          goto schleifenende;
                          }
                k++;
                }
          k = 0;
          i++;
          }
schleifenende:
</code></pre>
<p>oder hab ich das falsch verstanden ? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1310829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310829</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Thu, 21 Jun 2007 15:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:00:34 GMT]]></title><description><![CDATA[<p>Wenn du jetzt noch die Schleifenbedingungen richtig herum setzt, dürfte es hinkommen (und btw, mit einer for()-Schleife sieht das Ganze gleich viel übersichtlicher aus ;)).</p>
<p>Edit: Und was mir im Nachhinein noch aufgefallen ist - du hast vergessen, i zu initialisieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310835</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:00:34 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:19:08 GMT]]></title><description><![CDATA[<p>Hi learning,</p>
<p>wenn Du das in eine Funktion auslagerst, wird's einfach:</p>
<pre><code class="language-cpp">bool findeInMeinerMap(vector&lt;string&gt; const&amp; v, char const item, size_t&amp; vPos, size_t&amp; sPos) {
   for(vPos=0; vPos &lt; v.size(); ++vPos) {
      for(sPos=0; sPos &lt; v[vPos].size(); ++sPos) {
         if(v[vPos][sPos] == item) return true;
      }
   }
   return false;
}

int main (int argc, char **argv)
{
   vector&lt;string&gt; map;
   size_t vPos, sPos;
   for(size_t i=0; i&lt;8; ++i) map.push_back(&quot;Simon2&quot;);

   if(findeInMeinerMap(map, 'i', vPos, sPos)) 
      cout &lt;&lt; &quot;gefunden: &quot; &lt;&lt; vPos &lt;&lt; &quot;, &quot; &lt;&lt; sPos &lt;&lt; &quot;\n&quot;;
   else cout &lt;&lt; &quot;NICHT gefunden\n&quot;;

   return 0;
}
</code></pre>
<p>Aber Du kannst natürlich auch string.find() einsetzen, das spart Dir die innere Schleife:</p>
<pre><code class="language-cpp">bool findeInMeinerMap(vector&lt;string&gt; const&amp; v, char const item, size_t&amp; vPos, size_t&amp; sPos) {
   for(vPos=0; vPos &lt; v.size(); ++vPos) {
      sPos = v[vPos].find(item);
      if(string::npos != sPos) return true;
   }
   return false;
}
</code></pre>
<p>... oder Du bastelst Dir ein Konstrukt, das std::find_if() auf vector nutzt.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310838</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:19:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:06:52 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a><br />
und was müsste dann bei string.find() herein? nur der zu suchende char?</p>
<p>und nochwas: was erhalte ich als ergebnis?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a><br />
mhja, aber ich hab irgendwie eine while-sympathie xD</p>
<p>ja is klah, das war ja auch nurnochma schnell hier gepostet <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/1310839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310839</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:06:52 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:07:09 GMT]]></title><description><![CDATA[<p>Immer ruhig, Brauner ! Alter Mann is' kein D-Zug ! <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>s.o.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310840</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:07:09 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:13:08 GMT]]></title><description><![CDATA[<p>:PPPPP</p>
<p>alled klah!</p>
<p>mh, tut mir leid, aber ich habs jetz scho selbst gelöst <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>sieht jetz so aus:</p>
<pre><code class="language-cpp">int i = 0;
    int k = 0;
    while (i &lt; map.size()) {
          input = map[i][k];
          if (input == 'p') {
                    break;
                    }
          while ( k != 19 ) {
                input = map[i][k];
                if (input == 'p') {
                          break;
                          }
                k++;
                }

          k = 0;
          i++;
          }
</code></pre>
<p><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="😃"
    /><br />
mh, aber das string.find() interessiert mich trotzdem <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1310842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310842</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:13:08 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:20:25 GMT]]></title><description><![CDATA[<p>hokage schrieb:</p>
<blockquote>
<p>...<br />
mh, aber das string.find() interessiert mich trotzdem <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>
</blockquote>
<p>Hast Du mein Obiges Post gesehen ? Da steht's drin.</p>
<p>Der Vollständigkeit halber (wenn auch für dieses konkrete Aufgabe woh ein wenig oversized) noch die &quot;std::find_if&quot;-Variante:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
using std::find_if;

struct locateChar{ // &quot;Functor&quot; = Typ, der als Funktion genutzt wird
   locateChar(char i, size_t&amp; pos) : item(i), sPos(pos) {}
   char const item;
   size_t&amp; sPos;
   bool operator()(string const&amp; s) { // Funktionsoperator liefert true zurück, wenn char gefunden
      sPos = s.find(item);
      return (string::npos != sPos);
   }
};   

bool findeInMeinerMap(vector&lt;string&gt; const&amp; v, char const item, size_t&amp; vPos, size_t&amp; sPos) {
   locateChar loc(item, sPos);
   vector&lt;string&gt;::const_iterator vIter = find_if(v.begin(), v.end(), loc);
   if(vIter == v.end()) return false;
   vPos = vIter - v.begin(); // Position bestimmen
   return true;
}
</code></pre>
<p>Übrigens zu Deiner Lösung: Du fragst k immer noch auf einen festen Wert ab ... da täte ich auch nochmal &quot;size()&quot; rein....</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310845</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:20:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:22:30 GMT]]></title><description><![CDATA[<p>hachja, lol <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="🙂"
    /> *gleich umänder*</p>
<p>vielen dank!</p>
<p>huijuijui, das sieht alled so kompliziert aus <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1310848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310848</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:22:30 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Fri, 22 Jun 2007 06:57:04 GMT]]></title><description><![CDATA[<p>hokage schrieb:</p>
<blockquote>
<p>...<br />
huijuijui, das sieht alled so kompliziert aus <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>
</blockquote>
<p>OK, die find_if()-Geschichte vielleicht (ist aber ein Konzept, das Dir noch häufiger begegnen und oftmals die Sache einfacher machen wird) ... aber<br />
das hier</p>
<pre><code class="language-cpp">bool findeInMeinerMap(vector&lt;string&gt; const&amp; v, char const item, size_t&amp; vPos, size_t&amp; sPos) {
   for(vPos=0; vPos &lt; v.size(); ++vPos) {
      sPos = v[vPos].find(item);
      if(string::npos != sPos) return true;
   }
   return false;
}
</code></pre>
<p>Ist doch wirklich selbsterklärender als Dein Code, oder ?<br />
Von mir aus auch in der &quot;while-Variante&quot;:</p>
<pre><code class="language-cpp">bool findeInMeinerMap(vector&lt;string&gt; const&amp; v, char const item, size_t&amp; vPos, size_t&amp; sPos) {
   vPos=0;
   while(vPos &lt; v.size()) {
      sPos = v[vPos].find(item);
      if(string::npos != sPos) return true;
      ++vPos
   }
   return false;
}
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310851</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 22 Jun 2007 06:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Suche on Thu, 21 Jun 2007 16:31:56 GMT]]></title><description><![CDATA[<p>jo is mir scho klah ( nachdem ichs mir ma zu gemüte geführt habe )^^</p>
<p>naja, bin eh erstma in der testphase, muss mir noch ein bissl das objektorientierte angucken mit<br />
objekt erstellen<br />
methoden ....</p>
<p>usw... bei php ma ein bissl angeschnitten aber das is ja hier was andres xD</p>
<p>greetz. hok</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1310854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1310854</guid><dc:creator><![CDATA[hokage]]></dc:creator><pubDate>Thu, 21 Jun 2007 16:31:56 GMT</pubDate></item></channel></rss>