<?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[Compiler gibt falsches Ergebnis aus]]></title><description><![CDATA[<p>Hey Leute,<br />
ich übe mich gerade in C++ und sitze momentan an einer Aufgabe in welcher ich mir die Durchschnittstemperatur ausgeben lassen möchte. Doch leider liefert der Compiler mir jedes mal ein falsches Ergebnis und ich komme einfach nicht drauf woran es liegen könnte. Vielleicht kann mir ja hier jemand helfen <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>
<pre><code>#include &lt;iostream&gt;
using namespace std;
struct wetterdaten {
    int datum;          // nur Tag, 1 für 1.Juni
    float temp;         // in Grad Celsius
    char wetter[50];    // Beschreibung des Wetters
    float niederschlag; // in mm
};
int main() {
    wetterdaten juni[30];
    juni[0].datum = 1;
    juni[0].temp = 22;
    juni[0].wetter[50] = 'Sonne';
    juni[0].niederschlag = 0;
    juni[1].datum = 2;
    juni[1].temp = 28;
    juni[1].wetter[50] = 'Sonne';
    juni[1].niederschlag = 0;
    juni[2].datum = 3;
    juni[2].temp = 20;
    juni[2].wetter[50] = 'Regen';
    juni[2].niederschlag = 15;
    juni[3].datum = 4;
    juni[3].temp = 23;
    juni[3].wetter[50] = 'Sonne';
    juni[3].niederschlag = 0;
    juni[4].datum = 5;
    juni[4].temp = 19;
    juni[4].wetter[50] = 'Regen';
    juni[4].niederschlag = 15;
    float dt;  //=Durchschnittstemperatur
    float sum; // Summe Temperatur
    for (int i = 0; i &lt; 5; i++) {
        sum = 0;
        if (juni[i].wetter[50] == 'Sonne') {
            sum = sum + juni[i].temp;
            dt = sum / i;
        }
    }
    cout &lt;&lt; &quot;Durchschnittstempretatur an regenfreien Tagen im Juni: &quot; &lt;&lt; dt &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>wäre cool wenn mir jemand schnell helfen könnte <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>Mod-Edit (camper): Code-Tags + clang-format</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/343212/compiler-gibt-falsches-ergebnis-aus</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 14:11:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/343212.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jun 2017 13:04:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 21:03:40 GMT]]></title><description><![CDATA[<p>Hey Leute,<br />
ich übe mich gerade in C++ und sitze momentan an einer Aufgabe in welcher ich mir die Durchschnittstemperatur ausgeben lassen möchte. Doch leider liefert der Compiler mir jedes mal ein falsches Ergebnis und ich komme einfach nicht drauf woran es liegen könnte. Vielleicht kann mir ja hier jemand helfen <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>
<pre><code>#include &lt;iostream&gt;
using namespace std;
struct wetterdaten {
    int datum;          // nur Tag, 1 für 1.Juni
    float temp;         // in Grad Celsius
    char wetter[50];    // Beschreibung des Wetters
    float niederschlag; // in mm
};
int main() {
    wetterdaten juni[30];
    juni[0].datum = 1;
    juni[0].temp = 22;
    juni[0].wetter[50] = 'Sonne';
    juni[0].niederschlag = 0;
    juni[1].datum = 2;
    juni[1].temp = 28;
    juni[1].wetter[50] = 'Sonne';
    juni[1].niederschlag = 0;
    juni[2].datum = 3;
    juni[2].temp = 20;
    juni[2].wetter[50] = 'Regen';
    juni[2].niederschlag = 15;
    juni[3].datum = 4;
    juni[3].temp = 23;
    juni[3].wetter[50] = 'Sonne';
    juni[3].niederschlag = 0;
    juni[4].datum = 5;
    juni[4].temp = 19;
    juni[4].wetter[50] = 'Regen';
    juni[4].niederschlag = 15;
    float dt;  //=Durchschnittstemperatur
    float sum; // Summe Temperatur
    for (int i = 0; i &lt; 5; i++) {
        sum = 0;
        if (juni[i].wetter[50] == 'Sonne') {
            sum = sum + juni[i].temp;
            dt = sum / i;
        }
    }
    cout &lt;&lt; &quot;Durchschnittstempretatur an regenfreien Tagen im Juni: &quot; &lt;&lt; dt &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>wäre cool wenn mir jemand schnell helfen könnte <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>Mod-Edit (camper): Code-Tags + clang-format</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532084</guid><dc:creator><![CDATA[Kathanaa]]></dc:creator><pubDate>Wed, 07 Jun 2017 21:03:40 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:11:52 GMT]]></title><description><![CDATA[<p>1. Schalte die Warnungen, deines Compiler an.<br />
2. Initialisiere die Variable sum <strong>VOR</strong> der Schleife.<br />
3. Lerne den richtigen Umgang mit Arrays.</p>
<p>VG Martin</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532086</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:12:51 GMT]]></title><description><![CDATA[<p>Und was ist das falsche Ergebnis? Was wäre das richtige? Warum benutzt du keine Codetags?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532087</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:12:51 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:15:27 GMT]]></title><description><![CDATA[<p>1. verwende für Texte den Typ std::string statt char[]:<br />
#include &lt;string&gt;</p>
<p>struct ...{ ...<br />
std::string wetter;<br />
...}</p>
<p>2. String Literale (Text-Konstanten) schreibt man mit &quot;...&quot; und nicht mit '...':<br />
juni[2].wetter = &quot;Regen&quot;;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532088</guid><dc:creator><![CDATA[äääääääääääääääääääähhh]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:25:47 GMT]]></title><description><![CDATA[<p>manni66 schrieb:</p>
<blockquote>
<p>Und was ist das falsche Ergebnis? Was wäre das richtige? Warum benutzt du keine Codetags?</p>
</blockquote>
<p>Er gibt als Durchschnittstemp: 1,14368e+033 aus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532089</guid><dc:creator><![CDATA[kathanaa]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:31:14 GMT]]></title><description><![CDATA[<p>kathanaa schrieb:</p>
<blockquote>
<p>manni66 schrieb:</p>
<blockquote>
<p>Und was ist das falsche Ergebnis? Was wäre das richtige? Warum benutzt du keine Codetags?</p>
</blockquote>
<p>Er gibt als Durchschnittstemp: 1,14368e+033 aus</p>
</blockquote>
<p>Beachte Punkt 2 und 3 meines Beitrags, dann wird es funktionieren.</p>
<p>Noch ein Tip: Initialisere dt. Dann siehst Du möglicherweise den Mist, den Du programmiert hast.</p>
<p>VG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532090</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:31:14 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:36:18 GMT]]></title><description><![CDATA[<p>Die Variable dt wird nie mit einem Wert beschrieben.</p>
<p>Dein Vergleich mit 'Sonne' sollte immer falsch sein, denn C-Strings werden nicht mit == verglichen.</p>
<p>Aber deine Berechnung ist auch sonst komplett falsch, denn du berechnest nicht die Durchschnittstemperatur aus den Sonnentagen.<br />
Am ersten Tag sollte schon ein &quot;Division by Zero Error&quot; kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532091</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532091</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:38:49 GMT]]></title><description><![CDATA[<p>Da ist noch mehr im Argen:</p>
<pre><code>...
juni[0].wetter[50]='Sonne';
...
if (juni[i].wetter[50]=='Sonne') 
...
</code></pre>
<p>Das kompiliert bei mir nicht mal...<br />
Wenn du unbedingt C-artige Strings benutzen möchtest/musst dann benutz´ auch die String-Funktionen aus <code>string.h</code> bzw <code>cstring</code> . Ansonsten tu dir selbst einen Gefallen und benutz' <code>std::string</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532092</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:38:49 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:42:42 GMT]]></title><description><![CDATA[<p>DirkB schrieb:</p>
<blockquote>
<p>Am ersten Tag sollte schon ein &quot;Division by Zero Error&quot; kommen.</p>
</blockquote>
<p>float-Division durch 0 geht in Ordnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532094</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:42:42 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 13:55:55 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Da ist noch mehr im Argen:</p>
<pre><code>...
juni[0].wetter[50]='Sonne';
...
if (juni[i].wetter[50]=='Sonne') 
...
</code></pre>
<p>Das kompiliert bei mir nicht mal...<br />
Wenn du unbedingt C-artige Strings benutzen möchtest/musst dann benutz´ auch die String-Funktionen aus <code>string.h</code> bzw <code>cstring</code> . Ansonsten tu dir selbst einen Gefallen und benutz' <code>std::string</code> .</p>
</blockquote>
<p>Das wundert mich auch, daß der Compiler das übersetzt. Bin mit jetzt aber nicht sicher, ob der Standard erlaubt, Zeichenliterale mit mehr als einem Zeichen anzugeben und wie das zu bewerten ist. Da der Compiler des TE den Schmarrn übersetzt, nehme ich mal an, daß er irgendwas macht.</p>
<p>Egal was, hier</p>
<p>juni[0].wetter[50]='Sonne';</p>
<p>wird was reingeschrieben, um es da</p>
<p>juni[0].niederschlag=0;</p>
<p>sofort wieder zu überschreiben.</p>
<p>Deshalb wird das</p>
<p>juni[i].wetter[50]=='Sonne'</p>
<p>nie erfolgreich sein.</p>
<p>Denn</p>
<pre><code>struct wetterdaten
{
int datum; //nur Tag, 1 für 1.Juni
float temp; // in Grad Celsius
char wetter[50]; //Beschreibung des Wetters
float niederschlag; //in mm
};
</code></pre>
<p>Typischer Anfängerfehler eben.</p>
<p>VG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532095</guid><dc:creator><![CDATA[mgaeckler]]></dc:creator><pubDate>Wed, 07 Jun 2017 13:55:55 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 14:26:37 GMT]]></title><description><![CDATA[<p>mgaeckler  schrieb:</p>
<blockquote>
<pre><code>...
juni[0].wetter[50]='Sonne';
...
if (juni[i].wetter[50]=='Sonne')
...
</code></pre>
<p>Das wundert mich auch, daß der Compiler das übersetzt.</p>
</blockquote>
<p>juni[0].wetter[50] ist <strong>ein</strong> char, der auch noch außerhalb des Arrays liegt.<br />
'Sonne' ist ein char mit mehr als einem Zeichen. Das gibt eine Warnung.<br />
(Man könnte sich jetzt mit ASCII und Hextabelle ausrechnen, welcher 5-Byte-Wert das jetzt ist)</p>
<p>Jedenfalls ist der in juni[0].wetter[50] abgelegte Teil von 'Sonne' ein anderer Wert als 'Sonne'</p>
<p>Bei <code>juni[0].wetter[50]= 215784379;</code> fällt es eher auf</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2532099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532099</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Wed, 07 Jun 2017 14:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to Compiler gibt falsches Ergebnis aus on Wed, 07 Jun 2017 16:19:11 GMT]]></title><description><![CDATA[<p>hier nen c/c++ mischmasch, der das tut, was du möchtest, aber aus vielerlei gründen nicht empfehlenswert ist <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">#include &lt;iostream&gt; 
#include &lt;cstring&gt; 

using namespace std; 

struct wetterdaten 
{ 
  int datum; //nur Tag, 1 für 1.Juni --&gt; dann nenn es doch tag!
  float temp; // in Grad Celsius

  float niederschlag; //in mm --&gt; niederschlag_in_mm wäre doch besser?!

//c++-weg: std::string wetter; -&gt; erfordert #include &lt;string&gt;

//c - weg:
  char wetter[50]; //Beschreibung des Wetters

}; 

int main() 
{
  const unsigned ITEM_COUNT = 2;
  wetterdaten juni[ ITEM_COUNT ]; 

  juni[0].datum=1; 
  juni[0].temp=22; 
//  juni[0].wetter = &quot;Sonne&quot;; -- so einfach gehts mit string
  std::strcpy( juni[0].wetter, &quot;Sonne&quot; ); 
  juni[0].niederschlag=0; 

  juni[1].datum=2; 
  juni[1].temp=28; 
  std::strcpy( juni[1].wetter, &quot;Wolken&quot; );
  juni[1].niederschlag=0; 

  float sum = 0; //Summe Temperatur 
  unsigned sonnige_tage = 0;

  for (int i=0; i != ITEM_COUNT; i++) 
  {
//  if( juni[i].wetter == &quot;Sonne&quot; ) -- so einfach gehts mit string
    if(! std::strcmp(juni[i].wetter, &quot;Sonne&quot;) ) 
    {
      ++sonnige_tage;
      sum += juni[i].temp; 
    } 
  } 

  cout &lt;&lt; &quot;Durchschnittstempretatur im Juni: &quot; &lt;&lt; sum / sonnige_tage &lt;&lt; endl; 

  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2532108</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2532108</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 07 Jun 2017 16:19:11 GMT</pubDate></item></channel></rss>