<?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[Dynamisch Array]]></title><description><![CDATA[<p>Hallo Leidensgenossen,</p>
<p>habe da nen kleines Problem.</p>
<p>Habe ein kleines Programm geschrieben bei dem es um dynamische Array´s geht.<br />
Kurze erläterung zum Programm:</p>
<p>Das Programm soll aus einer TXT Datei int bzw. double Werte einlesen und diese dann in einen Array speichern. Die Array größe ist beim Programmstart 2. Sollen mehr daten eingelesen werden ( weil in der Datei mehr als zwei Werte stehen ) so soll dieses beim einlesen erkannt werden und anschließend automatisch das Array verdoppelt werden. Ist dies geschiehen, soll der einlese vorgang weitergeführt werden. Das verdoppeln der Array größe ist so oft zu wiederholen wie es zum einlesen benötigt wird.<br />
Soweit eigentlich kein Thema.<br />
Das von mir geschrieben Programm habe ich mit VC++ 6.0 geschrieben, erstellt und Compiliert. Bei beiden ist kein Fehr aufgetreten.</p>
<p>Beim Programm ausführen passiert auch noch nix. Wählt man nun das Menü aus &quot;Von Datei auslesen&quot;, wird dieses auch getan.<br />
Solange die Anzahl der Werte nicht 4 überschreitet, so läuft das programm einwandfrei. Stehen mehr werte drin als 4 funktioniert das einlesen, leider aber nicht das ausgeben des eingelesenes. Es gibt ein Programmabsturz.<br />
Lässt man nun den Debugger laufen, treten keine Fehler auf und das Programm macht auch das ausgeben.</p>
<p>Hier mein geschriebenes Programm:</p>
<p>#include &lt;string&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;cstdlib&gt;<br />
#include &lt;fstream&gt;<br />
#include &lt;sstream&gt;</p>
<p>using namespace std;</p>
<p>int einlesen (int);<br />
void ausgabe ();<br />
void vonDateiAuslesen ();<br />
void inDateiSchreiben();<br />
void arrayErweitern ();</p>
<p>struct Mess<br />
{<br />
int nummer;<br />
double messung;<br />
};</p>
<p>int ArrayGroesse = 2;<br />
int ArrayGroesseAlt = ArrayGroesse;</p>
<p>*<em>Mess <em>zeigerMessung = new Mess[ArrayGroesse];</em></em><br />
*<em>Mess <em>zeigerMessungTemp = new Mess[ArrayGroesse];</em></em></p>
<p>void main()<br />
{<br />
int eingabeMessung;<br />
int eingabe;</p>
<p>bool exit = false;</p>
<p>for ( int i = 0; i &lt; ArrayGroesse; i++ )<br />
{<br />
zeigerMessung[i].nummer = 0;<br />
zeigerMessung[i].messung = 0;<br />
}</p>
<p>while ( exit != true )<br />
{<br />
cout&lt;&lt;&quot; 1. Einagbe &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 2. Ausgabe &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 3. Von Datei auslesen &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 4. In Datei schreiben &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 0. Beenden &quot;&lt;&lt;endl;<br />
cout&lt;&lt;endl;<br />
cout&lt;&lt;&quot; Ihre eingabe: &quot;;<br />
cin&gt;&gt;eingabe;</p>
<p>switch ( eingabe )<br />
{<br />
case 1:</p>
<p>cout&lt;&lt;&quot; Messwert eingeben: &quot;;<br />
cin&gt;&gt;eingabeMessung;</p>
<p>einlesen (eingabeMessung);</p>
<p>break;</p>
<p>case 2:</p>
<p>ausgabe ();</p>
<p>break;</p>
<p>case 3:</p>
<p>vonDateiAuslesen ();</p>
<p>break;</p>
<p>case 4:</p>
<p>inDateiSchreiben ();</p>
<p>break;</p>
<p>case 0:</p>
<p>exit = true;</p>
<p>}<br />
}</p>
<p>}</p>
<p>int einlesen (int x)<br />
{</p>
<p>for ( int i = 0;i&lt;ArrayGroesse ;i++ )<br />
{</p>
<p>if ( zeigerMessung[i].nummer == 0 )<br />
{<br />
zeigerMessung[i].nummer = i+1;<br />
zeigerMessung[i].messung = x;<br />
break;<br />
}<br />
else if ( i == (ArrayGroesse-1))<br />
{<br />
arrayErweitern ();<br />
}</p>
<p>}</p>
<p>return 0;</p>
<p>}</p>
<p>void inDateiSchreiben()<br />
{<br />
fstream fout;</p>
<p>system (&quot;cls&quot;);</p>
<p>fout.open ( &quot;Datei.txt&quot;, ios::out );</p>
<p>if ( fout.good () )<br />
{<br />
cout&lt;&lt;&quot;\n\t\t Datei konnte erstellt werden bzw. geoeffnet werden!&quot;&lt;&lt;endl;</p>
<p>for ( int i = 0; i&lt;ArrayGroesse; i++)<br />
{<br />
if (zeigerMessung[i].nummer != 0 )<br />
{<br />
fout&lt;&lt;zeigerMessung[i].messung&lt;&lt;endl;<br />
}<br />
else<br />
break;</p>
<p>}<br />
}<br />
else<br />
{<br />
cout&lt;&lt;&quot;\n\t\t Datei konnte nicht erstellt werden bzw. geoeffnet werden!&quot;&lt;&lt;endl;</p>
<p>}</p>
<p>fout.close ();</p>
<p>}</p>
<p>void vonDateiAuslesen ()<br />
{<br />
int mess, laengeZeile;<br />
string zeile;</p>
<p>fstream fin;</p>
<p>fin.open ( &quot;Datei.txt&quot;, ios::in );</p>
<p>while ( !fin.eof () )<br />
{</p>
<p>getline ( fin, zeile);</p>
<p>istringstream auslesen ( zeile );<br />
laengeZeile = zeile.length ();</p>
<p>auslesen&gt;&gt;mess;</p>
<p>if ( laengeZeile &gt; 0 )<br />
{<br />
einlesen (mess);<br />
}<br />
}</p>
<p>fin.close ();</p>
<p>}</p>
<p>void ausgabe ()<br />
{<br />
for ( int i = 0; i&lt;ArrayGroesse; i++ )<br />
{<br />
cout&lt;&lt;zeigerMessung[i].nummer&lt;&lt;&quot; &quot;&lt;&lt;zeigerMessung[i].messung&lt;&lt;endl;</p>
<p>}</p>
<p>}</p>
<p>void arrayErweitern ()<br />
{<br />
for ( int i = 0; i&lt;ArrayGroesse; i++ )<br />
{<br />
zeigerMessungTemp[i].messung = zeigerMessung[i].messung;<br />
zeigerMessungTemp[i].nummer = zeigerMessung[i].nummer;<br />
}</p>
<p>delete zeigerMessung;</p>
<p>ArrayGroesse *=2;</p>
<p>zeigerMessung = new Mess[ArrayGroesse];</p>
<p>for ( i = 0; i &lt; ArrayGroesse; i++ )<br />
{<br />
zeigerMessung[i].nummer = 0;<br />
zeigerMessung[i].messung = 0;<br />
}</p>
<p>for ( i = 0; i&lt;ArrayGroesseAlt; i++ )<br />
{<br />
zeigerMessung[i].messung = zeigerMessungTemp[i].messung;<br />
zeigerMessung[i].nummer = zeigerMessungTemp[i].nummer ;<br />
}</p>
<p>ArrayGroesseAlt = ArrayGroesse;</p>
<p>}</p>
<p>Mir ist klar, das das Programm besser geschrieben werden könnte. Dies sollte aber nicht ausschlaggebend sein. Wichtig ist die Fehlerfreie Funktion des Programms.<br />
Für eure Hilfe wäre ich euch sehr dankbar.</p>
<p>Gruß</p>
<p>sky-server</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/141784/dynamisch-array</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 16:15:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/141784.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 24 Mar 2006 22:52:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dynamisch Array on Fri, 24 Mar 2006 22:52:52 GMT]]></title><description><![CDATA[<p>Hallo Leidensgenossen,</p>
<p>habe da nen kleines Problem.</p>
<p>Habe ein kleines Programm geschrieben bei dem es um dynamische Array´s geht.<br />
Kurze erläterung zum Programm:</p>
<p>Das Programm soll aus einer TXT Datei int bzw. double Werte einlesen und diese dann in einen Array speichern. Die Array größe ist beim Programmstart 2. Sollen mehr daten eingelesen werden ( weil in der Datei mehr als zwei Werte stehen ) so soll dieses beim einlesen erkannt werden und anschließend automatisch das Array verdoppelt werden. Ist dies geschiehen, soll der einlese vorgang weitergeführt werden. Das verdoppeln der Array größe ist so oft zu wiederholen wie es zum einlesen benötigt wird.<br />
Soweit eigentlich kein Thema.<br />
Das von mir geschrieben Programm habe ich mit VC++ 6.0 geschrieben, erstellt und Compiliert. Bei beiden ist kein Fehr aufgetreten.</p>
<p>Beim Programm ausführen passiert auch noch nix. Wählt man nun das Menü aus &quot;Von Datei auslesen&quot;, wird dieses auch getan.<br />
Solange die Anzahl der Werte nicht 4 überschreitet, so läuft das programm einwandfrei. Stehen mehr werte drin als 4 funktioniert das einlesen, leider aber nicht das ausgeben des eingelesenes. Es gibt ein Programmabsturz.<br />
Lässt man nun den Debugger laufen, treten keine Fehler auf und das Programm macht auch das ausgeben.</p>
<p>Hier mein geschriebenes Programm:</p>
<p>#include &lt;string&gt;<br />
#include &lt;iostream&gt;<br />
#include &lt;cstdlib&gt;<br />
#include &lt;fstream&gt;<br />
#include &lt;sstream&gt;</p>
<p>using namespace std;</p>
<p>int einlesen (int);<br />
void ausgabe ();<br />
void vonDateiAuslesen ();<br />
void inDateiSchreiben();<br />
void arrayErweitern ();</p>
<p>struct Mess<br />
{<br />
int nummer;<br />
double messung;<br />
};</p>
<p>int ArrayGroesse = 2;<br />
int ArrayGroesseAlt = ArrayGroesse;</p>
<p>*<em>Mess <em>zeigerMessung = new Mess[ArrayGroesse];</em></em><br />
*<em>Mess <em>zeigerMessungTemp = new Mess[ArrayGroesse];</em></em></p>
<p>void main()<br />
{<br />
int eingabeMessung;<br />
int eingabe;</p>
<p>bool exit = false;</p>
<p>for ( int i = 0; i &lt; ArrayGroesse; i++ )<br />
{<br />
zeigerMessung[i].nummer = 0;<br />
zeigerMessung[i].messung = 0;<br />
}</p>
<p>while ( exit != true )<br />
{<br />
cout&lt;&lt;&quot; 1. Einagbe &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 2. Ausgabe &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 3. Von Datei auslesen &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 4. In Datei schreiben &quot;&lt;&lt;endl;<br />
cout&lt;&lt;&quot; 0. Beenden &quot;&lt;&lt;endl;<br />
cout&lt;&lt;endl;<br />
cout&lt;&lt;&quot; Ihre eingabe: &quot;;<br />
cin&gt;&gt;eingabe;</p>
<p>switch ( eingabe )<br />
{<br />
case 1:</p>
<p>cout&lt;&lt;&quot; Messwert eingeben: &quot;;<br />
cin&gt;&gt;eingabeMessung;</p>
<p>einlesen (eingabeMessung);</p>
<p>break;</p>
<p>case 2:</p>
<p>ausgabe ();</p>
<p>break;</p>
<p>case 3:</p>
<p>vonDateiAuslesen ();</p>
<p>break;</p>
<p>case 4:</p>
<p>inDateiSchreiben ();</p>
<p>break;</p>
<p>case 0:</p>
<p>exit = true;</p>
<p>}<br />
}</p>
<p>}</p>
<p>int einlesen (int x)<br />
{</p>
<p>for ( int i = 0;i&lt;ArrayGroesse ;i++ )<br />
{</p>
<p>if ( zeigerMessung[i].nummer == 0 )<br />
{<br />
zeigerMessung[i].nummer = i+1;<br />
zeigerMessung[i].messung = x;<br />
break;<br />
}<br />
else if ( i == (ArrayGroesse-1))<br />
{<br />
arrayErweitern ();<br />
}</p>
<p>}</p>
<p>return 0;</p>
<p>}</p>
<p>void inDateiSchreiben()<br />
{<br />
fstream fout;</p>
<p>system (&quot;cls&quot;);</p>
<p>fout.open ( &quot;Datei.txt&quot;, ios::out );</p>
<p>if ( fout.good () )<br />
{<br />
cout&lt;&lt;&quot;\n\t\t Datei konnte erstellt werden bzw. geoeffnet werden!&quot;&lt;&lt;endl;</p>
<p>for ( int i = 0; i&lt;ArrayGroesse; i++)<br />
{<br />
if (zeigerMessung[i].nummer != 0 )<br />
{<br />
fout&lt;&lt;zeigerMessung[i].messung&lt;&lt;endl;<br />
}<br />
else<br />
break;</p>
<p>}<br />
}<br />
else<br />
{<br />
cout&lt;&lt;&quot;\n\t\t Datei konnte nicht erstellt werden bzw. geoeffnet werden!&quot;&lt;&lt;endl;</p>
<p>}</p>
<p>fout.close ();</p>
<p>}</p>
<p>void vonDateiAuslesen ()<br />
{<br />
int mess, laengeZeile;<br />
string zeile;</p>
<p>fstream fin;</p>
<p>fin.open ( &quot;Datei.txt&quot;, ios::in );</p>
<p>while ( !fin.eof () )<br />
{</p>
<p>getline ( fin, zeile);</p>
<p>istringstream auslesen ( zeile );<br />
laengeZeile = zeile.length ();</p>
<p>auslesen&gt;&gt;mess;</p>
<p>if ( laengeZeile &gt; 0 )<br />
{<br />
einlesen (mess);<br />
}<br />
}</p>
<p>fin.close ();</p>
<p>}</p>
<p>void ausgabe ()<br />
{<br />
for ( int i = 0; i&lt;ArrayGroesse; i++ )<br />
{<br />
cout&lt;&lt;zeigerMessung[i].nummer&lt;&lt;&quot; &quot;&lt;&lt;zeigerMessung[i].messung&lt;&lt;endl;</p>
<p>}</p>
<p>}</p>
<p>void arrayErweitern ()<br />
{<br />
for ( int i = 0; i&lt;ArrayGroesse; i++ )<br />
{<br />
zeigerMessungTemp[i].messung = zeigerMessung[i].messung;<br />
zeigerMessungTemp[i].nummer = zeigerMessung[i].nummer;<br />
}</p>
<p>delete zeigerMessung;</p>
<p>ArrayGroesse *=2;</p>
<p>zeigerMessung = new Mess[ArrayGroesse];</p>
<p>for ( i = 0; i &lt; ArrayGroesse; i++ )<br />
{<br />
zeigerMessung[i].nummer = 0;<br />
zeigerMessung[i].messung = 0;<br />
}</p>
<p>for ( i = 0; i&lt;ArrayGroesseAlt; i++ )<br />
{<br />
zeigerMessung[i].messung = zeigerMessungTemp[i].messung;<br />
zeigerMessung[i].nummer = zeigerMessungTemp[i].nummer ;<br />
}</p>
<p>ArrayGroesseAlt = ArrayGroesse;</p>
<p>}</p>
<p>Mir ist klar, das das Programm besser geschrieben werden könnte. Dies sollte aber nicht ausschlaggebend sein. Wichtig ist die Fehlerfreie Funktion des Programms.<br />
Für eure Hilfe wäre ich euch sehr dankbar.</p>
<p>Gruß</p>
<p>sky-server</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023473</guid><dc:creator><![CDATA[sky-server]]></dc:creator><pubDate>Fri, 24 Mar 2006 22:52:52 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch Array on Fri, 24 Mar 2006 23:33:50 GMT]]></title><description><![CDATA[<p>Hi,<br />
Bei deiner Funktion arrayErweitern vergisst du das zeigerMessungTemp array am Schluß auf die neue Größe zu setzen. Also mit <strong>delete[]</strong>(ändere das auch in der Funktion) den Speicher freigeben und neuen anfordern.</p>
<p>Tschau,<br />
Cappo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023479</guid><dc:creator><![CDATA[Cappo]]></dc:creator><pubDate>Fri, 24 Mar 2006 23:33:50 GMT</pubDate></item><item><title><![CDATA[Reply to Dynamisch Array on Fri, 24 Mar 2006 23:41:05 GMT]]></title><description><![CDATA[<p>Super, danke dir.</p>
<p>War ein dummer Fehler!!!</p>
<p>Man, das ich des net gesehen hab , man man man!!!</p>
<p>Danke dir nochmal <strong>Cappo</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1023480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1023480</guid><dc:creator><![CDATA[sky-server]]></dc:creator><pubDate>Fri, 24 Mar 2006 23:41:05 GMT</pubDate></item></channel></rss>