Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » C++ Programmierung » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Seiten (4): « vorherige 1 2 [3] 4 nächste » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++ Programmierung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Na, meinetwegen.
Aber wenn du keine zwei Header hast, kannst du keine 2 inkludieren.

siehe Anhang.

Dateianhang:
zip CMeasure.zip (1,43 KB, 225 mal heruntergeladen)


__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 17:44 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Jassy
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

aber wie erkennt er denn sonst die andere Klasse dann euler ?

Muss ich dann gar nichts machen?
08.12.2013 17:47
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Im Header steht:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
class CMeasValue
{
//...
};

class CMeasSeries : public CMeasValue
{
//...
};


in der .cpp:
code:
1:
2:
3:
4:
5:
int CMeasValue:: getExp()
double CMeasValue::getMeasValue(int exp)

bool CMeasSeries::put( double value, int exp, string baseUnit)
bool CMeasSeries::getMaxValue(CMeasValue& maxMeasValue)

das ist doch eindeutig zuzuordnen.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 17:50 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Jassy
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

tut mir leid euler ,das ich vielleicht das so schwer verstehe.

Jetzt funktioniert es auch wieder.

Und danke für deine Geduld.

Hast du auch paar tipss für mich wie ich hier genau denken soll?

Die print()-Methode soll die Adresse
des Messreihen-Objektes, die maximale Anzahl zu speichernder Messwerte, die
Grundeinheit der Messreihe und die aktuell gespeicherten Messwerte zusammen mit ihrem
Index anzeigen.

WIe soll ich hier vorgehen?
08.12.2013 17:58
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Bevor du etwas ausgeben kannst, solltest du dir Gedanken über das Befüllen mit Messwerten machen. Hast du da eine Funktion vorgegeben, oder sollst du die selbst schreiben?
Falls du etwas gegeben hast, kopiere es bitte hierher, das erspart mir die Arbeit.

Beim print musst du einfach für jeden der Messwerte mit cout << messwert etwas auf die Konsole pinseln.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 18:04 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Jassy
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Es ist nur das Diagramm gegeben (UML)

m_values: CMeasValue*
-m_maxValues: int
{0<m_maxValues}
-m_curValues: int = 0
{0<=m_curValues<m_maxValues}
-m_baseUnit: string
+CMeasSeries(baseUnit:string="",maxValues:int=10)
+~CMeasSeries()
+put(value:double,exp:int,baseUnit:string): bool
+getMaxValue(maxMeasValue:CMeasValue&): bool
+print(): void

Mehr nicht.


Das Befüllen von Messwerten macht man doch mit this oder?
08.12.2013 18:11
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Dann stammt
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
CMeasSeries::CMeasSeries(string baseUnit, int maxValues)
{
	if( 0 < maxValues )
	{
		m_maxValues = maxValues;
		m_baseUnit = baseUnit;
	}
	else
	{
		m_baseUnit = "";
		maxValues = 10;
	}
	CMeasSeries::CMeasSeries();
}

von dir?

Dann kann ich ja daran mäkeln smile
Es gibt keinen zweiten Konstruktor (ist auch überflüssig wegen der default-Werte).
Stattdessen gibt es laut deinem Klassendiagramm einen Destruktor.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
CMeasSeries::CMeasSeries(string baseUnit, int maxValues)
{
	if(maxValues > 0)
	{
		m_maxValues = maxValues;
		m_baseUnit = baseUnit;
	}
	else
	{
		m_baseUnit = "";
		maxValues = 10;
	}
// #include <cstdlib>
	m_values = (CMeasValue*)malloc(m_maxValues * sizeof(CMeasValue));
}

CMeasSeries::~CMeasSeries()
{
	free(m_values);
}


__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 18:21 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Jassy
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
CMeasSeries::CMeasSeries(string baseUnit, int maxValues)
{
	if(maxValues > 0)  Wieso hast du hier die Bedingung geändert?
	{
		m_maxValues = maxValues;
		m_baseUnit = baseUnit;
	}
	else
	{
		m_baseUnit = "";
		maxValues = 10;
	}

}

CMeasSeries::~CMeasSeries()
{
	free(m_values); // Muss man das hier schreiben ?
}
[/quote]

Fragen siehe code ?

Ich hoffe du bist noch nicht kaputt durch meine fragen.

Und tut mir leid warum machst du das hier?


// #include <cstdlib>
m_values = (CMeasValue*)malloc(m_maxValues * sizeof(CMeasValue));

Bitte um erklärung. smile
08.12.2013 18:31
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Ich habe die Bedingung nicht wirklich geändert, nur rechts und links getauscht (finde ich so lesbarer).

Zitat:
Und tut mir leid warum machst du das hier?

Weil ich gerade nichts besseres zu tun habe - oder meinst du das malloc?

Das malloc mache ich, um für die Messwerte Speicherplatz zu schaffen, irgendwo müssen die ja hin.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 18:35 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Jassy
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Könnte ich für m_value nicht auch so speicher anlegen mit new?

Weiss nicht ob ich es so richtig mach.

double *m_valueZeiger = new double;


Für was muss ich denn alles speicher anlegen?

Nur für messwerte?
08.12.2013 18:44
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Genau, und du musst auch wieder darauf zugreifen können.
Es macht keinen Sinn, Variablen Messwert1, Messwert2, ... anzulegen.
Ein Array geht auch nicht, weil du nicht weiß, wie viele Messwerte gespeichert werden sollen. Daher die dynamische Speicherreservierung.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 18:48 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Jassy
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

void print(){
double *m_valueZeiger = new double;

// Zugreifen mit this

cout << &m_value << this << endl;

}

So könnte ich doch den Wert ausgeben oder euler?

Die grundeinheit ist ja (m_exp)

.

Die kann ich ja einfach:

cout << exp endl; machen.

Als Bsp:

haben die das gegeben:

CMeasSeries@0012FE9C[50]:
leere Messreihe
CMeasSeries@0012FE9C[50]:
0: MeasValue@003467CC: 3.5*10^&#8208;3 V
1: MeasValue@003467FC: 500*10^&#8208;6 V
2: MeasValue@0034682C: 2.5*10^0 V
Maximalwert der Messreihe: MeasValue@0012FE6C: 2.5*10^0 V
Drücken Sie eine beliebige Taste . . .

Stimmt meine idee ein wenig?
08.12.2013 18:55
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Die Ausgabe wird etwa so gehen:
code:
1:
2:
3:
4:
5:
void CMeasSeries::print()
{
	for(int i = 0; i < m_curValues; i++)
		cout << *(m_values + i) << endl;
}

kann es leider nicht testen, da das Einlesen bei mir noch nicht klappt.
Du brauchst auf jeden Fall einen Zeiger vom Typ CMeasValue (dann hat ein Objekt auch die Größe von 16 Byte, keine 8 wie bei double).

__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 18:59 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Jassy
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meinst du es so euler:

Du brauchst auf jeden Fall einen Zeiger vom Typ CMeasValue (dann hat ein Objekt auch die Größe von 16 Byte, keine 8 wie bei double).

double *m_valueCMeasValue = new double;

müsste ich danach den Speicher nicht initialiesieren ?

So:

double * m_valueCMeasValue = new double[];
08.12.2013 19:05
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Nein, kein double:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
CMeasSeries::CMeasSeries(string baseUnit, int maxValues)
{
	if(maxValues > 0)
	{
		m_maxValues = maxValues;
		m_baseUnit = baseUnit;
	}
	else
	{
		m_baseUnit = "";
		maxValues = 10;
	}
	m_curValues = 0;
	m_values = (CMeasValue*)malloc(m_maxValues * sizeof(CMeasValue));
}

CMeasSeries::~CMeasSeries()
{
	free(m_values);
}

bool CMeasSeries::put(double value, int exp, string baseUnit)
{
	if(m_curValues < m_maxValues)
	{
		cout << "m_values = " << m_values << endl;
		cout << "m_values + m_curValues = " << m_values + m_curValues << endl;
		cout << "m_values + 1 = " << &m_values[1] << endl;
		m_values[m_curValues] = CMeasValue(value, exp, baseUnit);
		cout << "didIt\n";
		m_curValues++;
		return true;
	}
	return false;
}

Aber das funktioniert nicht.
Naja, vielleicht später, ich bin jetzt erst mal weg.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 19:10 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Seiten (4): « vorherige 1 2 [3] 4 nächste » Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » C++ Programmierung