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): [1] 2 3 nächste » ... letzte » Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen C++ Programmierung
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Jassy
unregistriert
C++ Programmierung Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo ich habe gerade probleme bei einer Aufgabe:

Header file:

#include<iostream>
#include <string>

using namespace std;


class CMeasValue{

private:
double m_value;
int m_exp;
string m_baseUnit;

public:
CMeasValue(double value = 0.0 ,int exp = 0,string baseUnit= " " );
int getExp();

void setBaseUnit(string baseUnit);
bool setMeasValue(double value,int exp);
double getMeasValue( int exp);
friend ostream& operator << (ostream& out, CMeasValue& rop);







};



Cpp File:

#include<iostream>
#include <string>
#include "_SS.h"

using namespace std;

CMeasValue::CMeasValue( double value, int exp , string baseUnit){

m_baseUnit = baseUnit;

if( exp%3 == 0){
m_exp = exp;
m_value = value;

}



else{

m_exp = 0;
m_value = 0.0;



}




}

int CMeasValue:: getExp(){

return m_exp;


}

void CMeasValue::setBaseUnit(string baseUnit){

m_baseUnit = baseUnit;

}
bool CMeasValue::setMeasValue(double value,int exp){
if( exp%3 == 0){
m_exp = exp;
m_value = value;
return true;

}



else{


return false;



}


};


double CMeasValue::getMeasValue(int exp){







}

Aufgabenstelleung:

Die Zusicherung lautet :
{m_exp%3==0}

Implementieren Sie die getMeasValue()-Methode. Diese Methode wandelt den im Objekt
gespeicherten Messwert m_value *10^m_exp in die durch den Parameter exp übergebene
Größenordnung um und liefert das Ergebnis zurück. Dabei werden die Werte von m_value
und m_exp nicht verändert. Der Parameter exp muss demzufolge auch die Zusicherung von
m_exp nicht einhalten.

Habt ihr tipps für mich wie ich die Methode implementieren kann ?

Im moment fehlt bei mir leider die Idee.


Meine Ideen:
gepostet
07.12.2013 13:03
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 dich ans Programmieren machst, muss dir klar sein, was du tust.
Hast du die Mathematik verstanden, die in dieser Aufgabe von dir gefordert wird?
Wenn ja, nach welcher Formel lässt sich der Rückgabewert errechnen?

__________________
Syntax Highlighting fürs Board (Link)
07.12.2013 14:02 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

Allgemeine Formel

m_value*10^{m_exp}

Mathematisch muss ich doch jetzt so rechnen:

m_value*10^{m_exp*(-1)} oder?

Mein prolem ist jetzt ein wenig das als code zu schreiben .

Bei der get Methode muss man ja hauptsächlich return benutzen oder?
Aber ich habe trotzdem ein wenig probleme beim implementieren.

Hast du tipps?
07.12.2013 15:34
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

So, wie ich die Aufgabe verstanden habe:
[latex]\text{m{\_}value} \cdot 10^{\text{m{\_}exp}} = \text{value} \cdot 10^{\text{exp}}[/latex], wobei value ausgegeben werden soll.
[latex]\text{value} = \text{m{\_}value} \cdot 10^{\text{m{\_}exp - exp}}[/latex]
in C++ dann also:
code:
1:
2:
3:
4:
5:
#include <cmath>

double CMeasValue::getMeasValue(int exp){
    return m_value * pow(10, m_exp - exp);
}


ach ja: schreibe mal bei deinem Header in die erste Zeile #pragma once, damit stellst du sicher, dass der Header nur einmal eingebunden wird.

__________________
Syntax Highlighting fürs Board (Link)
07.12.2013 16:37 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

Was bewirkt denn dieses pow ?

m_exp - exp Und warum subtrahierst du hier?
07.12.2013 17:40
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

pow(basis, exponent) entspricht [latex]\text{basis}^\text{exponent}[/latex].

Ich habe die Potenzgesetze verwendet, genau genommen das fünfte in der Auflistung der Wikipedia.
[latex]\text{m{\_}value} \cdot 10^{\text{m{\_}exp}} = \text{value} \cdot 10^{\text{exp}} | : 10^{\text{exp}} [/latex]
[latex]\text{m{\_}value}\cdot \frac{10^{\text{m{\_}exp}}}{10^{\text{exp}}} = \text{value}[/latex]
[latex]\text{m{\_}value}\cdot 10^{\text{m{\_}exp-exp}} = \text{value}[/latex]
[latex]\text{value} = \text{m{\_}value}\cdot 10^{\text{m{\_}exp-exp}}[/latex]

__________________
Syntax Highlighting fürs Board (Link)
07.12.2013 18:26 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

Kannst du mir erklären warum die exponenten subtrahiert werden sollen für die Aufgabe ?
07.12.2013 19:15
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 dachte, das hätte ich verwirrt
Ich versuche es mit einem Beispiel:
code:
1:
2:
3:
CMeasValue myvalue;
myvalue.setMeasValue(1.53, 6);
double d = myvalue.getMeasValue(5)

[latex]1,53 \cdot 10^6 = 15,3 \cdot 10^5[/latex]
diese 15,3 werden nach Ausführung dieser Zeilen in der Variablen d stehen.

__________________
Syntax Highlighting fürs Board (Link)
07.12.2013 19:25 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

Ich verstehe leider nur noch nicht , warum sich das Komma verschoben hat?
07.12.2013 20:13
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

Weil sich gleichzeitig die Zehnerpotenz geändert hat.
[latex]1,53 \cdot 10^6 = 1,53 \cdot 10^{1+5} = 1,53 \cdot 10^1 \cdot 10^5  = 1,53 \cdot 10 \cdot 10^5  = (1,53 \cdot 10) \cdot 10^5 = 15,3 \cdot 10^5[/latex]

__________________
Syntax Highlighting fürs Board (Link)
07.12.2013 20:22 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

Aha jetzt verstehe ich es . Aber bei diesem Beispiel wenn die exponenten ja addiert .

Aber in dem Code wird ja subtrahiert .

Das verstehe ich jetzt nicht so ganz .
Tut mir leid , dass ich das so schwer verstehe .
07.12.2013 20:56
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:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
#include<iostream>
#include <string>
#include "SS.h"
#include <cmath>

using namespace std;

CMeasValue::CMeasValue( double value, int exp , string baseUnit){

	m_baseUnit = baseUnit;

	if( exp%3 == 0){
		m_exp = exp;
		m_value = value;

	}



		else{

			m_exp = 0;
			m_value = 0.0;



	}




}

int CMeasValue:: getExp(){

	return m_exp;


}

void CMeasValue::setBaseUnit(string baseUnit){

	m_baseUnit = baseUnit;

}
bool CMeasValue::setMeasValue(double value,int exp){
	if( exp%3 == 0){
			m_exp = exp;
			m_value = value;
			return true;

		}



			else{


				return false;



		}


};


double CMeasValue::getMeasValue(int exp){


	 return m_value * pow(10, m_exp - exp);




}


Mir werden folgender fehler angezeigt:
Description Resource Path Location Type
'pow' is ambiguous '
Wie kann ich den fehler beheben ?

Und jetzt habe ich auch noch bei folgender Aufgabe probleme:
Erweitern Sie das main Programm, indem Sie das Beispiel aus f) mit Hilfe der Methode
getMeasValue() programmieren. Erzeugen Sie dazu ein neues Messwert-Objekt test mit
den entsprechenden Parameterwerten und zeigen Sie sowohl das Messwert-Objekt als auch
das Ergebnis der Umrechnung (mit Einheit) auf dem Bildschirm an (siehe Beispiel unten).
MeasValue@0012FF28: 0*10^0

Ich habs versucht so zu testen :

#include <iostream>
using namespace std;
#include "GIT_SS11.h"

int main(){


test.getMeasValue(0);

Aber ich kann hier nur einen Parameter geben ?

Tipps?





}
07.12.2013 22: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

Nochmal zur Berechnung:
Mit setMeasValue(1.53, 6) wird die Zahl 1,53*10^6 erzeugt.
Mit getMeasValue(5) wird der Teil vor der Zehnerpotenz (also das x von x*10^5) ausgegeben.
[latex]1,53 \cdot 10^6 = x \cdot 10^5[/latex]
[latex]1,53 \cdot 10^6 : 10^5 = x[/latex]
[latex]1,53 \cdot 10^{6-5} = x[/latex]
[latex]1,53 \cdot 10^1 = x[/latex]
[latex]15,3 = x[/latex]
[latex]x = 15,3[/latex]

Zitat:
Mir werden folgender fehler angezeigt:
Description Resource Path Location Type
'pow' is ambiguous '
Wie kann ich den fehler beheben ?

Da weiß ich nicht weiter. Du kannst versuchen, #include <cmath> durch #include <math.h> zu ersetzen, aber das würde das Problem nur umgehen, nicht lösen.

Zur Testfunktion:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
int main()
{
	CMeasValue myvalue;
	myvalue.setMeasValue(1.53, 6);
	double d = myvalue.getMeasValue(5);
	cout << myvalue << "   =" << d << "*10^5\n";
	return 0;
}

//Ausgabe:
//MeasValue@0x28fee0: 1.53*10^6
//   =15.3*10^5


Damit das funktioniert, musst du natürlich erst die Operatorüberladung implementieren.

__________________
Syntax Highlighting fürs Board (Link)
08.12.2013 07:03 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

Warum hast du als ersten Schritt CMeasValule my value;

Geschrieben ?

Kannst du mir erklären wie man das mit der Operator Überladung macht ?
08.12.2013 12: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

Um eine Instanz der Klasse CMeasValue zu erstellen.

code:
1:
2:
3:
4:
ostream& operator << (ostream& out, CMeasValue& rop)
{
	out << "MeasValue@" << &rop << ": " << rop.m_value << "*10^" << rop.m_exp << rop.m_baseUnit << endl;
}


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