Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > C/C++, Visual C++, Visual C++.NET

C/C++, Visual C++, Visual C++.NET Fragen und Antworten zu C/C++, Visual C++ und Visual C++.NET

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50850, Antworten: 1390
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26624, Antworten: 4194
Gehe zum ersten neuen Beitrag Windows Oberfläche (Schrift,...
Aufrufe: 177, Antworten: 10
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 65, Antworten: 5
Gehe zum ersten neuen Beitrag TabCtrl
Aufrufe: 122, Antworten: 12
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 94, Antworten: 4
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 18, Antworten: 2
Gehe zum ersten neuen Beitrag Suche Programm um Werbung zu...
Aufrufe: 50, Antworten: 2
Gehe zum ersten neuen Beitrag McAfee AVERT Stinger...
Aufrufe: 14, Antworten: 0
Gehe zum ersten neuen Beitrag Sticky Password 6.0.2...
Aufrufe: 26, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02.08.2006, 14:58   #1 (Direktlink)
Erfolgreich angemeldet
 
Registriert seit: 02.08.2006
Beiträge: 4
Standard Kurve ausgeben

Wer kann mir sagen, warum mein Code nicht funktioniert?
Ich habe eine Vorlage, bei der ein Stein fallen gelassen wird, und die Zeit bis zum Aufprall auf den Boden mit hilfe einer Kurve ausgegeben wird.
Nun soll ich das Prog. so umschreiben, das der Verlauf eines Kreditverlaufs ebenfalls mit einer Kurve ausgegeben wird
Hier ist der Code:


/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/*P3_W1_13 Grafische Darstellung der Strecke, die ein */
/* Stein im freien Fall zurücklegt, über der vom Losassen des Steines */
/* bis zum Eintreffen des Schalls gemessenen Zeit */
/* */
/* Lösung zur Wiederholungsaufgabe 3.1 */
/* */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

// Declarations added here will be included at the top of the .HPP file
#include <math.h>

const WDouble ERDBESCHLEUNIGUNG = 9.81; // 9.81 Meter/Sekunde im Quadrat

const WDouble SCHULD_AUS_VORMONAT = 100;
const WDouble JAHRESZINS = 4;
const WDouble MONATSRATE = 80;

const WDouble SCHALLGESCHW = 330.0; // 330 Meter/Sekunde


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 maxMeter; // max. Meter
WDouble maxSekunden; // max. Sekunden
WDouble pixelProMeter;
WDouble pixelProSekunde;
WString strSec[20]; // Beschriftung Sekunden
WString strMeter[20]; // Beschriftung Meter

protected: // add your protected instance data here

public: void zeichneGrafik( void );

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

public: WDouble berechneZeit( WDouble meter );

};

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

// Include definitions for resources.
#include "WRes.h"


WBool Form1::Form1_Create(
WObject * source,
WCreateEventData * event )
{
maxMeter = 10000; // Hoechster Wert in Metern
maxSekunden = 19.19; // Hoechste Zeit in Sekunden
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()) );

/*--------- Die Einheiten Meter und Sekunden in Pixel umrechnen -------*/

pixelProMeter = ( nullY - maxY ) / maxMeter;
pixelProSekunde = ( maxX - nullX ) / maxSekunden;

/*-------------------------- 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 meter, sekunde;
WDrawText * zahl;

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

stiftKoordinatenKreuz.Create( WColorBrightBlue);

stiftTeilstrich.Create( WColorBlack,1,WPStyleDot );

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

/*------------------------- Koordinatenkreuz zeichnen -----------------*/
/* // WDrawLine *teilstrich = new WDrawLine(setzePunkt(0, 0),
//setzePunkt(0, maxMeter));
WDrawLine *linie = new WDrawLine( setzePunkt(0,0), setzePunkt(0,maxMeter));
//teilstrich->SetPen(stiftTeilstrich);
linie->SetPen(stiftKoordinatenKreuz);
AddDrawPrimitive( linie );

//teilstrich = new WDrawLine(setzePunkt(0, 0), setzePunkt(maxSekunden, 0));
linie = new WDrawLine( setzePunkt(0,0), setzePunkt(maxSekunden,0));
//teilstrich->SetPen(stiftTeilstrich);
linie->SetPen(stiftKoordinatenKreuz);
AddDrawPrimitive( linie );
*/
/*----------------------- Koordinatenkreuz beschriften ----------------*/

/* WDrawText *xAchse = new WDrawText( setzePunkt(20.6, 0)," Zeit in sec " );
xAchse->SetFont(GetFont());
AddDrawPrimitive( xAchse );

WDrawText *yAchse = new WDrawText( setzePunkt(-0.3, 10500)," Tiefe in Meter " );
yAchse->SetFont(GetFont());
AddDrawPrimitive( yAchse );*/

/*------------------ Zeitachse mit Sekundenwerten beschriften. --------*/
WInt i=0;
for( sekunde=0; sekunde < maxSekunden; sekunde++ )
{
zahl = new WDrawText((WPoint) setzePunkt(sekunde,-1), "");
strSec[i].Sprintf(" %d ", sekunde);

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

zahl->SetText(strSec[i]);
zahl->SetFont(GetFont());
AddDrawPrimitive( zahl );
i++;
}

/*--------------- Die Tiefenachse mit Meterwerten beschriften. --------*/
i=1;
for( meter=1000; meter < maxMeter; meter+=1000 )
{
zahl = new WDrawText((WPoint) setzePunkt(-0.3, meter+2), "");
strMeter[i].Sprintf(" %d ", meter);

//zahl->SetNumCharacters( strMeter[10 -1].GetLength() );

zahl->SetText(strMeter[i]);
zahl->SetFont(GetFont());
AddDrawPrimitive( zahl );
i++;
}

/*--------------- Teilstriche für die Sekunden einzeichnen -----------*/

for( sekunde=1; sekunde < maxSekunden; sekunde++ )
{
WDrawLine *teilstrich = new WDrawLine( setzePunkt(sekunde,0),
setzePunkt(sekunde,maxMeter));
teilstrich->SetPen(stiftTeilstrich);
AddDrawPrimitive( teilstrich );
}

/*--------------- Teilstriche für die Meter einzeichnen --------------*/

for( meter=1000; meter < maxMeter; meter+=1000 )
{
WDrawLine *teilstrich = new WDrawLine(setzePunkt(0,meter),
setzePunkt(maxSekunden,meter));
teilstrich->SetPen(stiftTeilstrich);
AddDrawPrimitive( teilstrich );
}

/*------------ Kurve für die Tiefe über der Wartezeit zeichnen --------*/
for( meter=1000; meter < maxMeter; meter++ )
{
WDouble zeit1 = berechneZeit( meter );
WDouble zeit2 = berechneZeit( meter+1 );

WDrawLine *kurve = new WDrawLine(setzePunkt(zeit1,meter),
setzePunkt(zeit2,meter+1));
kurve->SetPen(stiftKurve);
AddDrawPrimitive( kurve );
}
SetBackColor( WColorWhite);
}

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Die Methode 'setzePunkt()' rechnet die übergebenen Koordinaten aus */
/* Zeit und Strecke in Bildschirmkoordinaten um und gibt diese in */
/* einem WPoint Objekt zurück */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/


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

punkt.x = nullX + zeit * pixelProSekunde; // Koordinaten für die Zeit

punkt.y = nullY - (tiefe * pixelProMeter); // Koordinaten für die Tiefe

return punkt;
}

/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
/* Die Methode 'berechneZeit()' ermittelt die Zeit für eine */
/* vorgegebene Tiefe */
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/

WDouble Form1::berechneZeit( WDouble meter )
{
WDouble zeit;

zeit = (WInt) SCHULD_AUS_VORMONAT + (SCHULD_AUS_VORMONAT *
(JAHRESZINS / 100 /12) - MONATSRATE);
//zeit = sqrt( 2*meter/ERDBESCHLEUNIGUNG ) + ( meter / SCHALLGESCHW );
return zeit;

}
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
Renate ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > C/C++, Visual C++, Visual C++.NET

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an




Alle Zeitangaben in WEZ +2. Es ist jetzt 06:17 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2