<?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[static-problem mit der variablen]]></title><description><![CDATA[<p>guten tag</p>
<p>c++<br />
ich hab folgendes problem:<br />
mein hauptprogramm liest durch cin&gt;&gt;x eine int-variable ein und die muss ich in ein nebenprogramm miteinbeziehen.<br />
das nebenprogramm beinhaltet static int-variablen. die grösse der variablen ist durch x bestimmt.</p>
<p>hier der fehler:<br />
error: storage size of (s) isn't constant<br />
error: variable-sized object (s) may not be initialized</p>
<p>und hier mein code:<br />
int main()<br />
{int x;cin&gt;&gt;x;trying(0,x)}<br />
void trying(int i,int n)<br />
{static int s[n]={0},d1[n*n-1]={0},d2[n*n-1]={0},d[n];}</p>
<p>was hab ich falsch gemacht?</p>
<p>danke im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/237057/static-problem-mit-der-variablen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 14:41:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/237057.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Mar 2009 20:53:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static-problem mit der variablen on Mon, 23 Mar 2009 20:53:48 GMT]]></title><description><![CDATA[<p>guten tag</p>
<p>c++<br />
ich hab folgendes problem:<br />
mein hauptprogramm liest durch cin&gt;&gt;x eine int-variable ein und die muss ich in ein nebenprogramm miteinbeziehen.<br />
das nebenprogramm beinhaltet static int-variablen. die grösse der variablen ist durch x bestimmt.</p>
<p>hier der fehler:<br />
error: storage size of (s) isn't constant<br />
error: variable-sized object (s) may not be initialized</p>
<p>und hier mein code:<br />
int main()<br />
{int x;cin&gt;&gt;x;trying(0,x)}<br />
void trying(int i,int n)<br />
{static int s[n]={0},d1[n*n-1]={0},d2[n*n-1]={0},d[n];}</p>
<p>was hab ich falsch gemacht?</p>
<p>danke im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685078</guid><dc:creator><![CDATA[13maxwell13]]></dc:creator><pubDate>Mon, 23 Mar 2009 20:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Mon, 23 Mar 2009 20:59:29 GMT]]></title><description><![CDATA[<p>Dimensionen von statischen Arrays müssen <em>konstante Ausdrücke</em> sein. Das heisst, ihr Wert muss bereits zur Kompilierzeit feststehen (z.B. durch ein Literal, eine <code>const</code> -Variable, die mit einem konstanten Ausdruck intialisiert wurde, ein Enumerator, ein Resulat von <code>sizeof</code> , ein Templateparameter).</p>
<p>Bitte mach den Code nächstes Mal lesbarer, auch [cpp]-Tags helfen dabei. <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/1685081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685081</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 23 Mar 2009 20:59:29 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Mon, 23 Mar 2009 21:01:33 GMT]]></title><description><![CDATA[<p>Du kannst die Anzahl der Elemente von s nicht mit einer Variablen (n) angeben. Dazu musst du dynamisch Speicher anfordern mit new.</p>
<p>P.S.: Bitte cpp-Tags benutzen.</p>
<p>P.P.S.: Arbeite an deinem Stil! Dieses enge Zusammenklatschen ist wirklich grauenhaft...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685083</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:01:33 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Mon, 23 Mar 2009 21:10:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
   int x;
   cin&gt;&gt;x;
   trying(0,x)
}

void trying(int i,int n)
{
   static int s[n]={0},d1[n*n-1]={0},d2[n*n-1]={0},d[n];
}
</code></pre>
<p>Erstmal muss die Array-Groesse von s zur Laufzeit bekannt sein. Wenn das nicht bestimmbar ist brauchst du ein dynamisches Array:</p>
<pre><code class="language-cpp">static int* s = new int[n];
</code></pre>
<p>Bdenke hier jedoch, dass du den Speicher auch wieder freigeben musst; ansonsten empfiehlt sich std-Container zu nutzen.</p>
<p>Desweiteren muss vor main noch eine Funktionsdeklaration in dieser Form stehen:</p>
<pre><code class="language-cpp">void trying(int,int);
</code></pre>
<p>Ausserdem hast du in main ein Semikolon nach dem Aufruf von trying vergessen.</p>
<p>Auf deine Formatierung solltest du auch besser achten, dein Code ist naemlich sehr schlecht lesbar. Und bitte beim naechsten mal CPP-Tags benutzen.</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685087</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Mon, 23 Mar 2009 21:21:56 GMT]]></title><description><![CDATA[<p>okay...das mit der darstellung des codes war nur ein grober entwurf, der die wichtigen aussagen beinhaltet.</p>
<p>nur zur vervollständigung der ganze code:</p>
<pre><code class="language-cpp">#include&lt;stdlib.h&gt;
#include&lt;iostream&gt;
#include&lt;iomanip&gt;
using namespace std;
void print(const int *,int);
void trying(int,int);
int main()
{
    int x;
    cout&lt;&lt;&quot;Lösung des n-Damen-Problems&quot;&lt;&lt;endl&lt;&lt;endl;
    cout&lt;&lt;&quot;Bitte geben Sie ]n[ an: &quot;;
    cin&gt;&gt;x;
    cout&lt;&lt;&quot;Die Loesungen des &quot;&lt;&lt;x&lt;&lt;&quot;-Damen-Problems&quot;&lt;&lt;endl;
    trying(0,x);
}

void trying(int i,int n)
{  static int   spalte[n]={0},
                d1[n*n-1]={0},
                d2[n*n-1]={0},
                dame[n];                                                    // Feld fuer die n Damen
   for (int k=0; k&lt;n; k++)
      if (spalte[k]==0 &amp;&amp; d1[i+k]==0 &amp;&amp; d2[i-k+(n-1)]==0)
      {                                                                     // Dame ist setzbar
          dame[i] = k;                                                      // Dame ist gesetzt
          spalte[k] = d1[i+k] = d2[i-k+(n-1)] = 1;
          if (i &lt; (n-1))
             trying(i+1);                                                   // Rekursion
          else
             print(dame);
          spalte[k] = d1[i+k] = d2[i-k+(n-1)] = 0;}}

void print(const int *dame,int n)
{  static int anzahl = 0;int k;
   cout&lt;&lt;&quot;Lsg.&quot;&lt;&lt;setw(2)&lt;&lt;++anzahl&lt;&lt;&quot;  &quot;;
   for (k=0; k&lt;n; k++)
      cout&lt;&lt;setw(3)&lt;&lt;dame[k]+1;                                             // +1, um nicht von 0 an zu zaehlen
   cout &lt;&lt; (anzahl%2 == 1) ? &quot;         &quot; : &quot;\n&quot;;
}
</code></pre>
<p>und nochmal danke für die antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685094</guid><dc:creator><![CDATA[13maxwell13]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Mon, 23 Mar 2009 21:53:00 GMT]]></title><description><![CDATA[<p>1. Die Formatierung ist teilweise immernoch graesslich</p>
<p>2. Hast du die vorherigen Beitraege ueberlesen?</p>
<p>3. Ich sehe zwei Funktionen mit jeweils zwei Parametern. In trying versuchst du die Funktionen aber mit nur einem Parameter aufzurufen.</p>
<p>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685111</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685111</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Mon, 23 Mar 2009 21:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Mon, 23 Mar 2009 23:51:18 GMT]]></title><description><![CDATA[<p>Ich bin ma nicht so und korrigiere zumindest das offensichtliche ^^</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt; //
#include &lt;iostream&gt;
#include &lt;iomanip&gt;

using namespace std;

void print(const int *, int); //parameternamen wären echt hilfreich - auch, wenn sie nicht pflicht sind, sollte man sie doch _immer_ mitschreiben
void trying(int, int); // ---- &quot;&quot; ----

int main() 
{ 
    int x; 
    cout&lt;&lt;&quot;Lösung des n-Damen-Problems&quot;&lt;&lt;endl&lt;&lt;endl; 
    cout&lt;&lt;&quot;Bitte geben Sie ]n[ an: &quot;; 
    cin&gt;&gt;x; 
    cout&lt;&lt;&quot;Die Loesungen des &quot;&lt;&lt;x&lt;&lt;&quot;-Damen-Problems&quot;&lt;&lt;endl; 
    trying(0,x); 
} 

void trying(int i,int n) 
{
  int *spalte = new int[n]; // etc - so, wie du das gemacht hattest, geht das nich - aber das wurde dir hier schon erklärt...

/*etc - das sieht mir zu grässlich aus, sry...*/

   for (int k=0; k&lt;n; k++) 
      if (spalte[k]==0 &amp;&amp; d1[i+k]==0 &amp;&amp; d2[i-k+(n-1)]==0) //sieht echt voll übersichtlich aus, oder!? :D mal davon abgesehen, dass es bestimmt falsch ist ^^

  delete[] spalte;
}

void print(const int *dame,int n) 
{
   int anzahl = 0;

   cout &lt;&lt; &quot;Lsg.&quot; &lt;&lt; setw(2) &lt;&lt; ++anzahl &lt;&lt; &quot;  &quot;;

   for (int k=0; k&lt;n; k++) 
      cout &lt;&lt; setw(3) &lt;&lt; dame[k];  // +1, um nicht von 0 an zu zaehlen - ich seh nirgendwo ne +1 :P

   cout &lt;&lt; (anzahl%2) ? &quot;         &quot; : &quot;\n&quot;; //
}
</code></pre>
<p>sag einfach ma, wie die aufgabenstellung (genau) war - da du zumindest gezeigt hast, dass du dich damit beschäftigt hast, könnte man dir ja auch ein ganz klein wenig helfen ^^<br />
ab und an steht da ja was von rekursiv oder eben gerade nicht - und das ausgeben versteh ich auf anhieb auch nich ^^</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685140</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 23 Mar 2009 23:51:18 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Tue, 24 Mar 2009 12:59:26 GMT]]></title><description><![CDATA[<p>also die aufgabe war folgend gestellt:</p>
<p>&quot;&quot;&quot;&quot;&quot;<br />
Verallgemeinern Sie das Achtdamen-Problem, und lösen Sie das N-Damenproblem mit n<br />
größer 4 und kleiner gleich 20. Im Programm wird die Zahl n angefordert. Es erfolgt eine Überprüfung auf Korrektheit.<br />
Mit Hilfe der Rekursion wird die Aufgabe gelöst, die Lösungen werden auf cout ausgegeben. Zusätzlich erfolgt eine grafische Ausgabe.<br />
&quot;&quot;&quot;&quot;&quot;</p>
<p>der pseudo-code wurde halt in der vorlesung erklärt. damit hab ich auch das 8-Damen-Problem gelöst(setze n=8).<br />
jetzt versuche ich es so zu gestalten, dass es halt mit einer beliebigen eingabe funzt.</p>
<p>P.S: was habts ihr alle mit meiner schreibweise für problemme. das ist doch nachvollziehbar,<br />
dass ich bei der deklaration der variablen alles in eine zeile schreibe.<br />
und wenn einer den algorithmus nicht versteht, da kann ich nach jedem wort ein enter machen und er checkt es sowieso nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685168</guid><dc:creator><![CDATA[13maxwell13]]></dc:creator><pubDate>Tue, 24 Mar 2009 12:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Tue, 24 Mar 2009 13:01:56 GMT]]></title><description><![CDATA[<p>13maxwell13 schrieb:</p>
<blockquote>
<p>P.S: was habts ihr alle mit meiner schreibweise für problemme</p>
</blockquote>
<p>Du wirst Dein eigenes Programm in einem halben Jahr nicht mehr verstehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685170</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 24 Mar 2009 13:01:56 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Tue, 24 Mar 2009 13:11:23 GMT]]></title><description><![CDATA[<p>okay...gutes argument</p>
<p>aber wie soll man dieses übersichtlicher hinschreiben???</p>
<pre><code class="language-cpp">if (spalte[k]==0 &amp;&amp; d1[i+k]==0 &amp;&amp; d2[i-k+(n-1)]==0) //sieht echt voll übersichtlich aus, oder!? :D mal davon abgesehen, dass es bestimmt falsch ist ^^
</code></pre>
<p>[von unskilled]</p>
<p>belehre mich meister^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685174</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685174</guid><dc:creator><![CDATA[13maxwell13]]></dc:creator><pubDate>Tue, 24 Mar 2009 13:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Tue, 24 Mar 2009 15:17:44 GMT]]></title><description><![CDATA[<p>13maxwell13 schrieb:</p>
<blockquote>
<p>okay...gutes argument</p>
<p>aber wie soll man dieses übersichtlicher hinschreiben???</p>
<pre><code class="language-cpp">if (spalte[k]==0 &amp;&amp; d1[i+k]==0 &amp;&amp; d2[i-k+(n-1)]==0) //sieht echt voll übersichtlich aus, oder!? :D mal davon abgesehen, dass es bestimmt falsch ist ^^
</code></pre>
<p>[von unskilled]</p>
<p>belehre mich meister^^</p>
</blockquote>
<p>Also ich sehe da erstmal keien Übersichtlichkeitsprobleme, generell ist bei solchen vergleichen aber ein Kommentar hilfreich was man damit eigentlich bezweckt, und für Komplexere Vergleiche oder Berechnungen kann, und sollte man, der übersichtlichkeit halber den Inhalt Vorberechnen oder änliches um das ganze etwas übersichtlicher zu gestalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685253</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685253</guid><dc:creator><![CDATA[Xebov]]></dc:creator><pubDate>Tue, 24 Mar 2009 15:17:44 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Tue, 24 Mar 2009 16:42:08 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">if ((!spalte[k]) &amp;&amp; (!d1[i+k]) &amp;&amp; (!d2[i-k+(n-1)]))
</code></pre>
</blockquote>
<p>Und noch nen Kommentar hinzu - abgesehen davon glaube ich noch immer nicht, dass es richtig wäre, aberich bin ehrlich gesagt zu faul, mir anzugucken, ob es nun doch stimmt ^^</p>
<p>Na dann fangen wir mal mit deiner Aufgabe an ^^</p>
<blockquote>
<p>Verallgemeinern Sie das Achtdamen-Problem, und lösen Sie das N-Damenproblem mit n<br />
größer 4 und kleiner gleich 20. Im Programm wird die Zahl n angefordert. Es erfolgt eine Überprüfung auf Korrektheit.<br />
Mit Hilfe der Rekursion wird die Aufgabe gelöst, die Lösungen werden auf cout ausgegeben. Zusätzlich erfolgt eine grafische Ausgabe.</p>
</blockquote>
<p>n ist also zwischen 4 und 20 - damit brauchen wir kein new und deshalb auch kein delete...<br />
Nur nen paar globale Variablen, weils sonst zu chaotisch mit dem weitergeben wird ^^ Und bevor jmd anfängt mit flamen, weil man ja immer davon abrät: ich denke, es ist hier durchaus vertretbar...</p>
<p>hier wäre zumindest nen hübscheres grundgerüst:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
using std::size_t; //ein positiver integer

const size_t n_max = 20;
const size_t n_max_square = n_max*n_max;

bool feld[n_max_square]; //zugriff auf [x][y] durch [x*n+y]

int main()
{
  size_t n;
  std::cin &gt;&gt; n;

  /*siehe faq zum console schließen verhindern*/
}
</code></pre>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685321</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Tue, 24 Mar 2009 16:42:08 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Tue, 24 Mar 2009 23:44:21 GMT]]></title><description><![CDATA[<p>size_t ist doch nicht im std-Namensraum, oder irre ich mich&gt; Ich musste jedenfalls beim MSVC noch nie size_t bekannt machen.</p>
<p>P.S.: Wieso nicht objektorientiert loesen? <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>Gruss<br />
Cartman</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685507</guid><dc:creator><![CDATA[Eric Cartman]]></dc:creator><pubDate>Tue, 24 Mar 2009 23:44:21 GMT</pubDate></item><item><title><![CDATA[Reply to static-problem mit der variablen on Wed, 25 Mar 2009 00:45:22 GMT]]></title><description><![CDATA[<p>Eric Cartman schrieb:</p>
<blockquote>
<p>size_t ist doch nicht im std-Namensraum, oder irre ich mich&gt; Ich musste jedenfalls beim MSVC noch nie size_t bekannt machen.</p>
</blockquote>
<p>es steht so im standard, auch wenn ich es nicht gerade sinnvoll finde -.-<br />
ich hab jedenfalls in meiner config immer nen #include &lt;cstdlib&gt; und using std::size_t stehen - so ist es im standard wie gesagt imho auch beschrieben...</p>
<p>Eric Cartman schrieb:</p>
<blockquote>
<p>P.S.: Wieso nicht objektorientiert loesen? <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>weil er vermutlich keinen plan von klassen usw hat - es geht (vermutlich) darum, nen algorithmus in ner programmiersprache zu implementieren - und hier braucht man weder ein new noch ein class noch was weiß ich nich ^^<br />
wäre mir neu, wenn es bei so nen aufgaben darum geht, c++ perfekt zu verwenden...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1685515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1685515</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 25 Mar 2009 00:45:22 GMT</pubDate></item></channel></rss>