<?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[Kreditverlauf graphisch darstellen]]></title><description><![CDATA[<p>Es soll eine Linie entstehen, welche die Dauer der Kreditabzahlung und nur die anfängliche Kredithöhe zeigt. Ich brauch also nur eine Linie.<br />
Ich bekomme keine Ausgabe!!!</p>
<p>Schuld<br />
^<br />
| ungefähres Model, hier fehlt eben die Gerade von der Laufzeit(unten beginend) nach oben zur Schuld<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|______________________&gt; Laufzeit</p>
<pre><code class="language-cpp">// Declarations added here will be included at the top of the .HPP file

   const WDouble         Monats_Rate = 100;
   const WDouble         JahresZins  = 6;
   const WDouble   Schuld_aus_Vormonat = 6000;

class __Form1_declspec Form1 : public __Form1_Base
{

	public:
		// add your public instance data here
	private:
		// add your private instance data here
		WInt nullX;          // Nullpunkt X-Achse
		WInt nullY;          // Nullpunkt Y-Achse
		WInt maxX;           // hoechster x-Wert
		WInt maxY;           // hoechster y-Wert

		WDouble maxSchuld;   // max. Schuld
		WDouble maxLaufzeit; // max. Laufzeit

		WDouble pixelProSchuld;       
		WDouble pixelProLaufzeit;       
		WString trLauf[20];    // Beschriftung Laufzeit
		WString strSchuld[20]; // Beschriftung Schuld

    protected:     // add your protected instance data here

    public:        void zeichneGrafik( void );

    public:        WPoint setzePunkt( WDouble zeit, WDouble tiefe );

    public:        WDouble berechneZeit( WDouble schuld );

};

// Code added here will be included at the top of the .CPP file

//  Include definitions for resources.
#include &quot;WRes.h&quot;

WBool Form1::Form1_Create(
  WObject *             source,
  WCreateEventData *    event )
{
    maxSchuld = 9000;        // Hoechste Schuld
    maxLaufzeit = 20;        // Hoechst Laufzeit
    nullX = 40;              // Nullpunkt links unten 
    nullY = GetHeight()-50;  // in Bildschirmkoordinaten
   maxX = GetWidth()-100;    // Hoechste erlaubte Bilschirmkoordinaten 
    maxY = 40;

/* Mindestgröße des Fensters festlegen, so daß es nie kleiner als      */
/* am Anfang werden kann.                                              */

   SetMinimumTrackingSize( WSize(GetWidth(), GetHeight()) );

   pixelProSchuld   = ( nullY - maxY ) / maxSchuld;
   pixelProLaufzeit =( maxX - nullX ) / maxLaufzeit;

/*-------------------------- Zeichnen der Grafik ----------------------*/

    zeichneGrafik();

    return FALSE;
}

Form1::Form1()
{
}

Form1::~Form1()
{
}

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Die Methode 'zeichneGrafik()' führt die grafischen Opertionen aus   */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

void Form1::zeichneGrafik( void )
{
  WPen				stiftKoordinatenKreuz;
  WPen				stiftTeilstrich;
  WPen				stiftKurve;
  WInt				schuld, laufzeit;
  WDrawText			* zahl;

/*------------------------- Stifte festlegen --------------------------*/

  stiftKoordinatenKreuz.Create( WColorBrightBlue);

  stiftTeilstrich.Create( WColorBlack,1,WPStyleDot );

  stiftKurve.Create( WColorBrightRed, 2 );                 // Stift Gitternetz 

/*------------------------- Koordinatenkreuz zeichnen -----------------*/

  WDrawLine *linie = new WDrawLine( setzePunkt(0,0), setzePunkt(0,maxSchuld));  
  linie-&gt;SetPen(stiftKoordinatenKreuz);                           
  AddDrawPrimitive( linie );
  linie = new WDrawLine( setzePunkt(0,0), setzePunkt(maxLaufzeit,0)); 
  linie-&gt;SetPen(stiftKoordinatenKreuz);                           
  AddDrawPrimitive( linie );

/*----------------------- Koordinatenkreuz beschriften ----------------*/

  WDrawText *xAchse = new WDrawText( setzePunkt(20.6, 0),&quot; Laufz-inMo &quot; );  
  xAchse-&gt;SetFont(GetFont());
  AddDrawPrimitive( xAchse );

  WDrawText *yAchse = new WDrawText( setzePunkt(-0.3,100000),&quot; RestSchu &quot; );  
  yAchse-&gt;SetFont(GetFont());
  AddDrawPrimitive( yAchse );

  WInt i=0;
  for( laufzeit= 1; laufzeit &lt; maxLaufzeit; laufzeit++ )
  {
	zahl = new WDrawText((WPoint) setzePunkt(laufzeit,-1), &quot; &quot;);
	strLauf[i].Sprintf(&quot; %d &quot;, laufzeit);

	//zahl-&gt;SetNumCharacters( strSec[i].GetLength() );

	zahl-&gt;SetText(strLauf[i]);
	zahl-&gt;SetFont(GetFont());
	AddDrawPrimitive( zahl );
    i++;
  }

  i=0;
  for( schuld=0; schuld &lt; maxSchuld; schuld+=1000)
  {
	zahl = new WDrawText((WPoint) setzePunkt(-0.4, schuld+2), &quot;&quot;);
	strSchuld[i].Sprintf(&quot; %d &quot;, schuld);

	//zahl-&gt;SetNumCharacters( strSchuld[i].GetLength() );

	zahl-&gt;SetText(strSchuld[i]);
	zahl-&gt;SetFont(GetFont());
	AddDrawPrimitive( zahl );
    i++;
  }

  for( laufzeit =1; laufzeit &lt; maxLaufzeit; laufzeit++ )
  {

	WDrawLine *teilstrich = new WDrawLine( setzePunkt(laufzeit,0), setzePunkt(laufzeit,maxSchuld)); 
	teilstrich-&gt;SetPen(stiftTeilstrich);                           
	AddDrawPrimitive( teilstrich );
  }

  for( schuld=1000; schuld &lt; maxSchuld; schuld+=1000 )
  {
	WDrawLine *teilstrich = new WDrawLine(setzePunkt(0,schuld), setzePunkt(maxLaufzeit,schuld)); 
	teilstrich-&gt;SetPen(stiftTeilstrich);                           
	AddDrawPrimitive( teilstrich );
  }

  for( schuld=0; schuld &lt; maxSchuld; schuld++ )
  {
	WDouble zeit2 = berechneZeit( schuld );
		WDouble zeit1 = berechneZeit( schuld+1 );

	WDrawLine *kurve = new WDrawLine(setzePunkt(zeit1,schuld), setzePunkt(zeit2,schuld+1));  
	kurve-&gt;SetPen(stiftKurve);                           
	AddDrawPrimitive( kurve );
  }
	SetBackColor( WColorBrightCyan );
}

WPoint Form1::setzePunkt( WDouble zeit, WDouble tiefe )
{
  WPoint                                    punkt;

  punkt.x = nullX + zeit * pixelProLaufzeit;  // Koordinaten für die Laufzeit

 punkt.y = nullY -tiefe * pixelProSchuld; // Koordinaten für die Schuld

return punkt;
}

WDouble Form1::berechneZeit( WDouble schuld )
{
	WDouble  Restschuld;

    Restschuld = Schuld_aus_Vormonat+(Schuld_aus_Vormonat*JahresZins /100/12)- Monats_Rate;
    return Restschuld;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/160783/kreditverlauf-graphisch-darstellen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 11 Sep 2026 09:34:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/160783.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Sep 2006 09:43:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kreditverlauf graphisch darstellen on Fri, 29 Sep 2006 09:43:35 GMT]]></title><description><![CDATA[<p>Es soll eine Linie entstehen, welche die Dauer der Kreditabzahlung und nur die anfängliche Kredithöhe zeigt. Ich brauch also nur eine Linie.<br />
Ich bekomme keine Ausgabe!!!</p>
<p>Schuld<br />
^<br />
| ungefähres Model, hier fehlt eben die Gerade von der Laufzeit(unten beginend) nach oben zur Schuld<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|______________________&gt; Laufzeit</p>
<pre><code class="language-cpp">// Declarations added here will be included at the top of the .HPP file

   const WDouble         Monats_Rate = 100;
   const WDouble         JahresZins  = 6;
   const WDouble   Schuld_aus_Vormonat = 6000;

class __Form1_declspec Form1 : public __Form1_Base
{

	public:
		// add your public instance data here
	private:
		// add your private instance data here
		WInt nullX;          // Nullpunkt X-Achse
		WInt nullY;          // Nullpunkt Y-Achse
		WInt maxX;           // hoechster x-Wert
		WInt maxY;           // hoechster y-Wert

		WDouble maxSchuld;   // max. Schuld
		WDouble maxLaufzeit; // max. Laufzeit

		WDouble pixelProSchuld;       
		WDouble pixelProLaufzeit;       
		WString trLauf[20];    // Beschriftung Laufzeit
		WString strSchuld[20]; // Beschriftung Schuld

    protected:     // add your protected instance data here

    public:        void zeichneGrafik( void );

    public:        WPoint setzePunkt( WDouble zeit, WDouble tiefe );

    public:        WDouble berechneZeit( WDouble schuld );

};

// Code added here will be included at the top of the .CPP file

//  Include definitions for resources.
#include &quot;WRes.h&quot;

WBool Form1::Form1_Create(
  WObject *             source,
  WCreateEventData *    event )
{
    maxSchuld = 9000;        // Hoechste Schuld
    maxLaufzeit = 20;        // Hoechst Laufzeit
    nullX = 40;              // Nullpunkt links unten 
    nullY = GetHeight()-50;  // in Bildschirmkoordinaten
   maxX = GetWidth()-100;    // Hoechste erlaubte Bilschirmkoordinaten 
    maxY = 40;

/* Mindestgröße des Fensters festlegen, so daß es nie kleiner als      */
/* am Anfang werden kann.                                              */

   SetMinimumTrackingSize( WSize(GetWidth(), GetHeight()) );

   pixelProSchuld   = ( nullY - maxY ) / maxSchuld;
   pixelProLaufzeit =( maxX - nullX ) / maxLaufzeit;

/*-------------------------- Zeichnen der Grafik ----------------------*/

    zeichneGrafik();

    return FALSE;
}

Form1::Form1()
{
}

Form1::~Form1()
{
}

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Die Methode 'zeichneGrafik()' führt die grafischen Opertionen aus   */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

void Form1::zeichneGrafik( void )
{
  WPen				stiftKoordinatenKreuz;
  WPen				stiftTeilstrich;
  WPen				stiftKurve;
  WInt				schuld, laufzeit;
  WDrawText			* zahl;

/*------------------------- Stifte festlegen --------------------------*/

  stiftKoordinatenKreuz.Create( WColorBrightBlue);

  stiftTeilstrich.Create( WColorBlack,1,WPStyleDot );

  stiftKurve.Create( WColorBrightRed, 2 );                 // Stift Gitternetz 

/*------------------------- Koordinatenkreuz zeichnen -----------------*/

  WDrawLine *linie = new WDrawLine( setzePunkt(0,0), setzePunkt(0,maxSchuld));  
  linie-&gt;SetPen(stiftKoordinatenKreuz);                           
  AddDrawPrimitive( linie );
  linie = new WDrawLine( setzePunkt(0,0), setzePunkt(maxLaufzeit,0)); 
  linie-&gt;SetPen(stiftKoordinatenKreuz);                           
  AddDrawPrimitive( linie );

/*----------------------- Koordinatenkreuz beschriften ----------------*/

  WDrawText *xAchse = new WDrawText( setzePunkt(20.6, 0),&quot; Laufz-inMo &quot; );  
  xAchse-&gt;SetFont(GetFont());
  AddDrawPrimitive( xAchse );

  WDrawText *yAchse = new WDrawText( setzePunkt(-0.3,100000),&quot; RestSchu &quot; );  
  yAchse-&gt;SetFont(GetFont());
  AddDrawPrimitive( yAchse );

  WInt i=0;
  for( laufzeit= 1; laufzeit &lt; maxLaufzeit; laufzeit++ )
  {
	zahl = new WDrawText((WPoint) setzePunkt(laufzeit,-1), &quot; &quot;);
	strLauf[i].Sprintf(&quot; %d &quot;, laufzeit);

	//zahl-&gt;SetNumCharacters( strSec[i].GetLength() );

	zahl-&gt;SetText(strLauf[i]);
	zahl-&gt;SetFont(GetFont());
	AddDrawPrimitive( zahl );
    i++;
  }

  i=0;
  for( schuld=0; schuld &lt; maxSchuld; schuld+=1000)
  {
	zahl = new WDrawText((WPoint) setzePunkt(-0.4, schuld+2), &quot;&quot;);
	strSchuld[i].Sprintf(&quot; %d &quot;, schuld);

	//zahl-&gt;SetNumCharacters( strSchuld[i].GetLength() );

	zahl-&gt;SetText(strSchuld[i]);
	zahl-&gt;SetFont(GetFont());
	AddDrawPrimitive( zahl );
    i++;
  }

  for( laufzeit =1; laufzeit &lt; maxLaufzeit; laufzeit++ )
  {

	WDrawLine *teilstrich = new WDrawLine( setzePunkt(laufzeit,0), setzePunkt(laufzeit,maxSchuld)); 
	teilstrich-&gt;SetPen(stiftTeilstrich);                           
	AddDrawPrimitive( teilstrich );
  }

  for( schuld=1000; schuld &lt; maxSchuld; schuld+=1000 )
  {
	WDrawLine *teilstrich = new WDrawLine(setzePunkt(0,schuld), setzePunkt(maxLaufzeit,schuld)); 
	teilstrich-&gt;SetPen(stiftTeilstrich);                           
	AddDrawPrimitive( teilstrich );
  }

  for( schuld=0; schuld &lt; maxSchuld; schuld++ )
  {
	WDouble zeit2 = berechneZeit( schuld );
		WDouble zeit1 = berechneZeit( schuld+1 );

	WDrawLine *kurve = new WDrawLine(setzePunkt(zeit1,schuld), setzePunkt(zeit2,schuld+1));  
	kurve-&gt;SetPen(stiftKurve);                           
	AddDrawPrimitive( kurve );
  }
	SetBackColor( WColorBrightCyan );
}

WPoint Form1::setzePunkt( WDouble zeit, WDouble tiefe )
{
  WPoint                                    punkt;

  punkt.x = nullX + zeit * pixelProLaufzeit;  // Koordinaten für die Laufzeit

 punkt.y = nullY -tiefe * pixelProSchuld; // Koordinaten für die Schuld

return punkt;
}

WDouble Form1::berechneZeit( WDouble schuld )
{
	WDouble  Restschuld;

    Restschuld = Schuld_aus_Vormonat+(Schuld_aus_Vormonat*JahresZins /100/12)- Monats_Rate;
    return Restschuld;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1146441</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146441</guid><dc:creator><![CDATA[RenateDj]]></dc:creator><pubDate>Fri, 29 Sep 2006 09:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to Kreditverlauf graphisch darstellen on Fri, 29 Sep 2006 12:17:49 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ehrlich ist mir der Code zu lang, um ihn ganz durchzufräsen ....<br />
aber mal eine Frage: Warum benutzt Du W...-Typen (ich dachte, die eingebauten Typen reichen) ? Und warum doubles (üblicherweise rechnet keine Bank mit höherer Auflösung als 10tel-cent) ?</p>
<p>Beim Vergleichen von ...doubles kommt es gerne mal zu erstaunlichen Ergebnissen.</p>
<p>Wenn Du übehaupt keine Ausgabe bekommst, würde ich mir die Werte erstmal als Zahlen ausgeben lassen und überprüfen, ob sie stimmen.<br />
Außerdem solltest Du mal Werte in Deinem System anzeigen lassen, die definitiv erscheinen müssen (um zu prüfen, ob Deine Ausgabe funktioniert).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1146531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1146531</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Fri, 29 Sep 2006 12:17:49 GMT</pubDate></item></channel></rss>