<?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[Kleines Programm schwerer Fehler]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe testweise ein kleines Programm (Konsolenanwendung) geschrieben, welches diverse Mittelwerte erfasst. Das kompilieren funktioniert in Visual C++ Express 2005 ohne Fehler/Probleme.</p>
<p>Wenn ich das Programm starte und mir irgentetwas berechnen lassen will, bekomme ich den Error das das Programm auf geschützten Speicher zugreifen will. Ich habe kA woran das liegen kann. Wie gesagt, der Error kommt erst wenn eine andere Methode als fill ausgeführt wird.</p>
<pre><code class="language-cpp">/**
 * 
 *  Programm zur ermittlung diverser Mittelwerte,
 *  bei vorheriger Erfassung von Daten durch
 *	Eingabe von Benutzer.
 *  Von ---
 *
 */

#include &quot;stdafx.h&quot;
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;math.h&gt;

using namespace System;
using namespace std;

class cWerte {

      private:

              double werte[100];			// Array in dem später die Werte gespeichert werden
              string  eingabe;				// string um Eingabe zu überprüfen bevor diese als Wert hinzugefügt wird
			  size_t found;					// Wird benötigt um eine Position eines Teilstringes in einem String zu speichern
              bool   readingValues;			// Setzt fest ob weitere Werte ermittelt werden sollen
              int    lastIndex;				// Beinhaltet die Größe des Arrays werte

      public:

		     /**
			  * Klasse zum Einlesen von Werten
			  */
             void readValues() {

                  /** Alle Werte auf 0 setzen **/

                  int i = 0;
                  while( i != 101 ) {

                         werte[i] = 0;
                         i++;

                  }

                  /** Werte einlesen **/                  

                  cout &lt;&lt; &quot;  \n  Bitte geben Sie nun nach und nach ihre gew\x81nschten Zahlen ein.\n&quot; &lt;&lt;
                          &quot;  Verwenden Sie anstelle eines Kommas, einen Punkt, bzw ein n wenn\n&quot; &lt;&lt;
                          &quot;  Sie die Eingabe beenden m&quot;&lt;&lt;&quot;\x94&quot;&lt;&lt;&quot;chten\n\n&quot;;

                  readingValues = true;						// Zu Beginn wahr, da mindestens ein Wert bzw der Abbruchstring erfasst werden muss

                  int j = 0;        
                  while( j != 100 &amp;&amp; readingValues ) {		// Maximal kann man 100 Werte eingeben

                         cout &lt;&lt; &quot;    - &quot;;					// Der Form halber ;)
                         if( j &lt; 9) cout &lt;&lt; &quot;0&quot;;			// Wenn die Zahl einstellig ist soll eine f\x81hrende Null ausgegeben werden
                         cout &lt;&lt; j + 1 &lt;&lt; &quot;: &quot;;				// Zeigt dann an bei dem wievieltem Wert man gerade ist

                         getline(cin,eingabe);				// Liest einen Wert ein (Wegen dem Variablentyp [string] nur mit getline möglich)
						 found = eingabe.find(&quot;n&quot;);			// Sucht nach einem n im eingegebenen Wert (Eigtl sollte man hier auf alle Buchstaben und Zeichen testen,
															// doch setzen wir eine korrekte Eingabe des Benutzers einfach mal als gegeben vorraus.

                         if( found == string::npos ) {				// Die position von n im string ist 0. In anderen Worten: Es ist nicht vorhanden :)
							 werte[j] = atof(eingabe.c_str());		// atof konvertiert den eingegebenen String in eine Zahl um diese in werte[j] abspeichern zu können.
						 }
                         else {
							readingValues = false;			// Der Benutzer wünscht keine weitere Eingabe von Zahlen
						 }

                         lastIndex++;						// Die zusätzliche Größeninformation über das Array wird inkrementiert.                                                                           
                         j++;

                  }

             };

             void getArethmetic() {

				 cout &lt;&lt; &quot;  \n&quot;
				      &lt;&lt; &quot;  Das arethmetische Mittel betr\x84gt: &quot;;

				 double aSumme = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aSumme = aSumme + werte[i];
					 i++;
				 }

				 bErgebnis = aSumme / lastIndex;
				 cout &lt;&lt; bErgebnis;

             };

/*             void getMedian() {

				 cout &lt;&lt; &quot;  \n&quot;
			              &lt;&lt; &quot;  Der Median beträgt: &quot;;

				 double aSumme = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aSumme = aSumme + werte[i];
					 i++;
				 }

				 bErgebnis = aSumme / lastIndex;
				 cout &lt;&lt; bErgebnis;

             };   */

	     void getHarmonic() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Das harmonische Mittel betr\x84gt: &quot;;

				 double aWert = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aWert = aWert + ( 1 / werte[i] );
					 i++;
				 }

				 aWert = aWert / 2;
				 bErgebnis = 1 / aWert;
				 cout &lt;&lt; bErgebnis;

             };

             void getGeometric() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Das geometrische Mittel betr\x84gt: &quot;;

				 double aProdukt = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aProdukt = aProdukt * werte[i];
					 i++;
				 }

				 bErgebnis = sqrt(aProdukt);
				 cout &lt;&lt; bErgebnis;

             };

			 void getMin() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Der kleinste Wert ist: &quot;;

				 int i = 0;
				 double min;

				 while( i != lastIndex ) {
					 if( i == 0 ) min = werte[i];
					 if( min &gt; werte[i] ) min = werte[i];
					 i++;
				 }

				 cout &lt;&lt; min;

			 }

			 void getMax() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Der gr\x94ßte Wert ist: &quot;;

				 int i = 0;
				 double max;

				 while( i != lastIndex ) {
					 if( i == 0 ) max = werte[i];
					 if( max &lt; werte[i] ) max = werte[i];
					 i++;
				 }

				 cout &lt;&lt; max;

			 }

};

int main(int argc, char *argv[]) {

    bool running = true;		// Speichert ab, ob das Programm weiterlaufen soll
	cWerte werte;				// Erstellt ein Objekt der klasse cWerte
    char auswahl;				// Speichert die Eingabe des Benutzers später ab

    cout &lt;&lt;  &quot;  \n&quot; &lt;&lt;
             &quot;               ############################\n&quot; &lt;&lt;
             &quot;               ##  Stochastik f\x81r Faule  ##\n&quot; &lt;&lt;
             &quot;               ############################\n&quot; &lt;&lt;
             &quot;  \n&quot; &lt;&lt;
             &quot;  Guten Tag. Mit diesem Tool k&quot;&lt;&lt;&quot;\x94&quot;&lt;&lt;&quot;nnen Sie in k\x81rzester Zeit\n&quot; &lt;&lt;
             &quot;  verschiedene Stochastische Angaben zu beliebig vielen\n&quot; &lt;&lt;
             &quot;  Werten automatisch berechnen lassen.\n&quot; &lt;&lt;
             &quot;  \n&quot;;

    werte.readValues();			// Das Programm läuft zum ersten mal, weshalb man Werte eingeben muss.

    while( running ) {			// Solange wie running wahr, das heist der Benutzer nicht beenden will, wird die Schleife ausgef\x81hrt

           cout &lt;&lt; &quot;  \n  Was m&quot;&lt;&lt;&quot;\x94&quot;&lt;&lt;&quot;chten Sie tun? Wählen Sie durch die Eingabe des Buchstaben.\n&quot;
                &lt;&lt; &quot;        a: Neue Werte einlesen\n&quot;
                &lt;&lt; &quot;        b: Das Arethmetische Mittel ausgeben lassen\n&quot;
                &lt;&lt; &quot;        c: Das Harmonische Mittel ausgeben lassen\n&quot;
                &lt;&lt; &quot;        d: Das Geometrische Mittel ausgeben lassen\n&quot;
				&lt;&lt; &quot;        e: Den kleinsten erfassten Wert ausgeben lassen\n&quot;
				&lt;&lt; &quot;        f: Den gr\x94\xE1ten erfassten Wert ausgeben lassen\n&quot;
                &lt;&lt; &quot;        q: Das Programm beenden\n&quot;
				&lt;&lt; &quot;        &quot;;

           cin  &gt;&gt; auswahl;		// Auswahl wird eingelesen und in auswahl gespeichert

                if ( auswahl == 'q' ) running = false;
           else if ( auswahl == 'a' ) werte.readValues();
           else if ( auswahl == 'b' ) werte.getArethmetic();
           else if ( auswahl == 'c' ) werte.getHarmonic();
           else if ( auswahl == 'd' ) werte.getGeometric();
		   else if ( auswahl == 'e' ) werte.getMin();
		   else if ( auswahl == 'f' ) werte.getMax();
           else                       cout &lt;&lt; &quot;  \nUnbekannte Operation.&quot;;

    }               

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/207223/kleines-programm-schwerer-fehler</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 00:41:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207223.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Mar 2008 07:19:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Mon, 01 Nov 2010 01:34:44 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe testweise ein kleines Programm (Konsolenanwendung) geschrieben, welches diverse Mittelwerte erfasst. Das kompilieren funktioniert in Visual C++ Express 2005 ohne Fehler/Probleme.</p>
<p>Wenn ich das Programm starte und mir irgentetwas berechnen lassen will, bekomme ich den Error das das Programm auf geschützten Speicher zugreifen will. Ich habe kA woran das liegen kann. Wie gesagt, der Error kommt erst wenn eine andere Methode als fill ausgeführt wird.</p>
<pre><code class="language-cpp">/**
 * 
 *  Programm zur ermittlung diverser Mittelwerte,
 *  bei vorheriger Erfassung von Daten durch
 *	Eingabe von Benutzer.
 *  Von ---
 *
 */

#include &quot;stdafx.h&quot;
#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;math.h&gt;

using namespace System;
using namespace std;

class cWerte {

      private:

              double werte[100];			// Array in dem später die Werte gespeichert werden
              string  eingabe;				// string um Eingabe zu überprüfen bevor diese als Wert hinzugefügt wird
			  size_t found;					// Wird benötigt um eine Position eines Teilstringes in einem String zu speichern
              bool   readingValues;			// Setzt fest ob weitere Werte ermittelt werden sollen
              int    lastIndex;				// Beinhaltet die Größe des Arrays werte

      public:

		     /**
			  * Klasse zum Einlesen von Werten
			  */
             void readValues() {

                  /** Alle Werte auf 0 setzen **/

                  int i = 0;
                  while( i != 101 ) {

                         werte[i] = 0;
                         i++;

                  }

                  /** Werte einlesen **/                  

                  cout &lt;&lt; &quot;  \n  Bitte geben Sie nun nach und nach ihre gew\x81nschten Zahlen ein.\n&quot; &lt;&lt;
                          &quot;  Verwenden Sie anstelle eines Kommas, einen Punkt, bzw ein n wenn\n&quot; &lt;&lt;
                          &quot;  Sie die Eingabe beenden m&quot;&lt;&lt;&quot;\x94&quot;&lt;&lt;&quot;chten\n\n&quot;;

                  readingValues = true;						// Zu Beginn wahr, da mindestens ein Wert bzw der Abbruchstring erfasst werden muss

                  int j = 0;        
                  while( j != 100 &amp;&amp; readingValues ) {		// Maximal kann man 100 Werte eingeben

                         cout &lt;&lt; &quot;    - &quot;;					// Der Form halber ;)
                         if( j &lt; 9) cout &lt;&lt; &quot;0&quot;;			// Wenn die Zahl einstellig ist soll eine f\x81hrende Null ausgegeben werden
                         cout &lt;&lt; j + 1 &lt;&lt; &quot;: &quot;;				// Zeigt dann an bei dem wievieltem Wert man gerade ist

                         getline(cin,eingabe);				// Liest einen Wert ein (Wegen dem Variablentyp [string] nur mit getline möglich)
						 found = eingabe.find(&quot;n&quot;);			// Sucht nach einem n im eingegebenen Wert (Eigtl sollte man hier auf alle Buchstaben und Zeichen testen,
															// doch setzen wir eine korrekte Eingabe des Benutzers einfach mal als gegeben vorraus.

                         if( found == string::npos ) {				// Die position von n im string ist 0. In anderen Worten: Es ist nicht vorhanden :)
							 werte[j] = atof(eingabe.c_str());		// atof konvertiert den eingegebenen String in eine Zahl um diese in werte[j] abspeichern zu können.
						 }
                         else {
							readingValues = false;			// Der Benutzer wünscht keine weitere Eingabe von Zahlen
						 }

                         lastIndex++;						// Die zusätzliche Größeninformation über das Array wird inkrementiert.                                                                           
                         j++;

                  }

             };

             void getArethmetic() {

				 cout &lt;&lt; &quot;  \n&quot;
				      &lt;&lt; &quot;  Das arethmetische Mittel betr\x84gt: &quot;;

				 double aSumme = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aSumme = aSumme + werte[i];
					 i++;
				 }

				 bErgebnis = aSumme / lastIndex;
				 cout &lt;&lt; bErgebnis;

             };

/*             void getMedian() {

				 cout &lt;&lt; &quot;  \n&quot;
			              &lt;&lt; &quot;  Der Median beträgt: &quot;;

				 double aSumme = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aSumme = aSumme + werte[i];
					 i++;
				 }

				 bErgebnis = aSumme / lastIndex;
				 cout &lt;&lt; bErgebnis;

             };   */

	     void getHarmonic() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Das harmonische Mittel betr\x84gt: &quot;;

				 double aWert = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aWert = aWert + ( 1 / werte[i] );
					 i++;
				 }

				 aWert = aWert / 2;
				 bErgebnis = 1 / aWert;
				 cout &lt;&lt; bErgebnis;

             };

             void getGeometric() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Das geometrische Mittel betr\x84gt: &quot;;

				 double aProdukt = 0, bErgebnis = 0;
				 int i = 0;

				 while( i != lastIndex ) {
					 aProdukt = aProdukt * werte[i];
					 i++;
				 }

				 bErgebnis = sqrt(aProdukt);
				 cout &lt;&lt; bErgebnis;

             };

			 void getMin() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Der kleinste Wert ist: &quot;;

				 int i = 0;
				 double min;

				 while( i != lastIndex ) {
					 if( i == 0 ) min = werte[i];
					 if( min &gt; werte[i] ) min = werte[i];
					 i++;
				 }

				 cout &lt;&lt; min;

			 }

			 void getMax() {

				 cout &lt;&lt; &quot;  \n&quot;
			          &lt;&lt; &quot;  Der gr\x94ßte Wert ist: &quot;;

				 int i = 0;
				 double max;

				 while( i != lastIndex ) {
					 if( i == 0 ) max = werte[i];
					 if( max &lt; werte[i] ) max = werte[i];
					 i++;
				 }

				 cout &lt;&lt; max;

			 }

};

int main(int argc, char *argv[]) {

    bool running = true;		// Speichert ab, ob das Programm weiterlaufen soll
	cWerte werte;				// Erstellt ein Objekt der klasse cWerte
    char auswahl;				// Speichert die Eingabe des Benutzers später ab

    cout &lt;&lt;  &quot;  \n&quot; &lt;&lt;
             &quot;               ############################\n&quot; &lt;&lt;
             &quot;               ##  Stochastik f\x81r Faule  ##\n&quot; &lt;&lt;
             &quot;               ############################\n&quot; &lt;&lt;
             &quot;  \n&quot; &lt;&lt;
             &quot;  Guten Tag. Mit diesem Tool k&quot;&lt;&lt;&quot;\x94&quot;&lt;&lt;&quot;nnen Sie in k\x81rzester Zeit\n&quot; &lt;&lt;
             &quot;  verschiedene Stochastische Angaben zu beliebig vielen\n&quot; &lt;&lt;
             &quot;  Werten automatisch berechnen lassen.\n&quot; &lt;&lt;
             &quot;  \n&quot;;

    werte.readValues();			// Das Programm läuft zum ersten mal, weshalb man Werte eingeben muss.

    while( running ) {			// Solange wie running wahr, das heist der Benutzer nicht beenden will, wird die Schleife ausgef\x81hrt

           cout &lt;&lt; &quot;  \n  Was m&quot;&lt;&lt;&quot;\x94&quot;&lt;&lt;&quot;chten Sie tun? Wählen Sie durch die Eingabe des Buchstaben.\n&quot;
                &lt;&lt; &quot;        a: Neue Werte einlesen\n&quot;
                &lt;&lt; &quot;        b: Das Arethmetische Mittel ausgeben lassen\n&quot;
                &lt;&lt; &quot;        c: Das Harmonische Mittel ausgeben lassen\n&quot;
                &lt;&lt; &quot;        d: Das Geometrische Mittel ausgeben lassen\n&quot;
				&lt;&lt; &quot;        e: Den kleinsten erfassten Wert ausgeben lassen\n&quot;
				&lt;&lt; &quot;        f: Den gr\x94\xE1ten erfassten Wert ausgeben lassen\n&quot;
                &lt;&lt; &quot;        q: Das Programm beenden\n&quot;
				&lt;&lt; &quot;        &quot;;

           cin  &gt;&gt; auswahl;		// Auswahl wird eingelesen und in auswahl gespeichert

                if ( auswahl == 'q' ) running = false;
           else if ( auswahl == 'a' ) werte.readValues();
           else if ( auswahl == 'b' ) werte.getArethmetic();
           else if ( auswahl == 'c' ) werte.getHarmonic();
           else if ( auswahl == 'd' ) werte.getGeometric();
		   else if ( auswahl == 'e' ) werte.getMin();
		   else if ( auswahl == 'f' ) werte.getMax();
           else                       cout &lt;&lt; &quot;  \nUnbekannte Operation.&quot;;

    }               

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1468509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468509</guid><dc:creator><![CDATA[MEETyA]]></dc:creator><pubDate>Mon, 01 Nov 2010 01:34:44 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Wed, 05 Mar 2008 07:22:18 GMT]]></title><description><![CDATA[<p>lastIndex wird nicht initialisiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468510</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468510</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 05 Mar 2008 07:22:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Wed, 05 Mar 2008 07:26:27 GMT]]></title><description><![CDATA[<p>lastIndex wird ja beim Einlesen der Werte initialisiert. Gut, das kann das Programm ja nicht ahnen, aber wie lege ich einen Prototypen an, bzw was muss ich tun um das Problem zu lösen ohne den alten Wert zu überschreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468511</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468511</guid><dc:creator><![CDATA[MEETyA]]></dc:creator><pubDate>Wed, 05 Mar 2008 07:26:27 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Wed, 05 Mar 2008 07:36:59 GMT]]></title><description><![CDATA[<p>MEETyA schrieb:</p>
<blockquote>
<p>lastIndex wird ja beim Einlesen der Werte initialisiert.</p>
</blockquote>
<p>Nein, lastIndex wird <strong>nicht</strong> initialisiert. Das könnte überhaupt nur in einem Konstruktor passieren, die Klasse hat aber keinen. Und auch sonst setzt du die Variable nirgends auf einen bestimmten Startwert, du zählst sie nur hoch -&gt; Bumm.</p>
<p>MEETyA schrieb:</p>
<blockquote>
<p>bzw was muss ich tun um das Problem zu lösen ohne den alten Wert zu überschreiben?</p>
</blockquote>
<p>Warum setzt du lastIndex nicht einfach am Anfang von readValues auf einen passenden Startwert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468513</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 05 Mar 2008 07:36:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Wed, 05 Mar 2008 07:37:48 GMT]]></title><description><![CDATA[<p>Danke <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>Problem gelöst <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/1468514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468514</guid><dc:creator><![CDATA[MEETyA]]></dc:creator><pubDate>Wed, 05 Mar 2008 07:37:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Wed, 05 Mar 2008 14:08:29 GMT]]></title><description><![CDATA[<p>Damti geht das? Sollte aber nicht <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="😃"
    /> Du hast relativ sehr viele Fehler drin, die Bereichsüberschreitung in Arrays betreffen!</p>
<pre><code class="language-cpp">void readValues() 
{

    /** Alle Werte auf 0 setzen **/

    int i = 0;
    while( i != 101 ) /* 0 ... 100 */ {

        werte[i] = 0; /* bumm! werte[100] =&gt; Bereichsüberschreitung */
        i++;
    }
    // ...
</code></pre>
<pre><code class="language-cpp">double werte[100];
</code></pre>
<p>...<br />
(1) Ein Array der Größe x hat Elemente 0 ... x - 1<br />
(2) for-Schleifen sind wohl noch nicht behandelt wurden? Schmeiß das Tutorial, das du benutzt, weg, das hat zumindest eine sehr schlechte Strukturierung, wenn while-Schleifen und Arrays schon behandelt wurden, aber keine for-Schleifen!</p>
<pre><code class="language-cpp">void readValues() 
{
    std::fill(werte, werte + 100, 0.0);
    // ...
</code></pre>
<p>...</p>
<pre><code class="language-cpp">void getMin() {

                 cout &lt;&lt; &quot;  \n&quot;
                      &lt;&lt; &quot;  Der kleinste Wert ist: &quot;;

                 int i = 0;
                 double min;

                 while( i != lastIndex ) {
                     if( i == 0 ) min = werte[i];
                     if( min &gt; werte[i] ) min = werte[i];
                     i++;
                 }

                 cout &lt;&lt; min;

             }
</code></pre>
<p>Ich weiß gerade nicht, als was last_index definiert ist, aber gehen wir mal davon aus, das er korrekt belegt ist:<br />
Warum legst du den Startwert von min nicht direkt auf werte[0] und beginnst bei i=1 mitm Durchlaufen? Dann brauchst du nicht jeden Schleifendurchlauf die if-Abfrage!</p>
<pre><code class="language-cpp">double get_min() const 
{
    if (lastIndex == 0) /* FEHLER! Keine Werte vorhanden! */

    double min(werte[0]);
    for (unsigned int i(1); i != lastIndex; ++i)
        if (werte[i] &lt; min) min = werte[i];
}
</code></pre>
<p>und warum alles neu erfinden, wenn das eine Funktion schon macht?</p>
<pre><code class="language-cpp">double get_min() const
{ return std::min(werte, werte + lastIndex); }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1468793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468793</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 05 Mar 2008 14:08:29 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Wed, 05 Mar 2008 14:21:22 GMT]]></title><description><![CDATA[<p>Und zum Abschluss mal was ganz anderes:</p>
<p>Du kannst die gewünschte Lokale in den Stream &quot;einbrennen&quot;:<br />
cout.imbue(locale(&quot;de_DE&quot;));</p>
<p>Dann musst Du Deine Benutzer nicht mit Dezimalpunkteingaben quälen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468807</guid><dc:creator><![CDATA[witte_]]></dc:creator><pubDate>Wed, 05 Mar 2008 14:21:22 GMT</pubDate></item><item><title><![CDATA[Reply to Kleines Programm schwerer Fehler on Wed, 05 Mar 2008 14:22:24 GMT]]></title><description><![CDATA[<p>Und zum Abschluss mal was ganz anderes:</p>
<p>Du kannst die gewünschte Lokale in den Stream &quot;einbrennen&quot;:<br />
cin.imbue(locale(&quot;de_DE&quot;));</p>
<p>Dann musst Du Deine Benutzer nicht mit Dezimalpunkteingaben quälen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468810</guid><dc:creator><![CDATA[witte_]]></dc:creator><pubDate>Wed, 05 Mar 2008 14:22:24 GMT</pubDate></item></channel></rss>