Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
C++ Verzweiflung mit Handling von Math.c
- Ersteller Black
- Erstellt am
antred
Lt. Commander
- Registriert
- Juni 2010
- Beiträge
- 1.288
Wenn du dem Struct aus cx01' Beispiel noch einen passenden Konstruktor verpaßt, kannst du das sogar noch kompakter schreiben. 
Code:
struct rueckgabewerte
{
const long double rueckgabeA;
const long double rueckgabeB;
rueckgabewerte( long double rueckgabeA_, long double rueckgabeB_ ) : rueckgabeA( rueckgabeA_ ), rueckgabeB( rueckgabeB_ ) {}
};
rueckgabewerte f()
{
return rueckgabewerte( 5.0, 3.0 );
}
Wie genau meinen, bitte?!e-Laurin schrieb:Deine Methode gibt eine double zurück, sie müsste aber die Struktur zurückgeben. Deswegen der Fehler.
Ich programmiere normalerweise numerische Sachen in C, meine Ein und Ausgaben der letzten Jahre haben sich auf ein paar cin und ein paar cout beschränkt... Die Art und Weise wie Visual C++ das handelt ist mir etwas Schleierhaft und nicht mein Fokus beim Programmieren.
Also sei bitte so nett und beschränke deine Kommentare auf Dinge die mir helfen und/oder dem Thema was beisteuern, oder lass es bleiben. Ich bin für jede Hilfe dankbar, aber was du glaubst was ich (nicht) beherrsche, tut echt wenig zur Sache. Ich betreibe seit einigen Jahren Numerik und ich sorge mich da eher um Sachen, wie Genauigkeit, als um Eingabe und Ausgabeformatierung. Allerdings schaue ich auch gerne über den Tellerrand und würde gerne wissen wie man in visual c++ das elegant löst. Dafür brauche ich eben ein wenig Hilfe, dafür bin ich dir auch dankbar, dass du dir die Zeit nimmst, hier zu Kommentieren.
Ist das Problem hier:
Ich war davon ausgegangen dass rueckgabewerte f() hier nur ein Platzhalter war, wie man das in einer beliebigen Funktion verwenden kann. Aber ich hätte das sozusagen 1:1 in meinen Code, in meine Funktion übernehmen sollen, oder?
Also sei bitte so nett und beschränke deine Kommentare auf Dinge die mir helfen und/oder dem Thema was beisteuern, oder lass es bleiben. Ich bin für jede Hilfe dankbar, aber was du glaubst was ich (nicht) beherrsche, tut echt wenig zur Sache. Ich betreibe seit einigen Jahren Numerik und ich sorge mich da eher um Sachen, wie Genauigkeit, als um Eingabe und Ausgabeformatierung. Allerdings schaue ich auch gerne über den Tellerrand und würde gerne wissen wie man in visual c++ das elegant löst. Dafür brauche ich eben ein wenig Hilfe, dafür bin ich dir auch dankbar, dass du dir die Zeit nimmst, hier zu Kommentieren.
Ergänzung ()
Ist das Problem hier:
?rueckgabewerte f()
{
rueckgabewerte x;
x.rueckgabeA = 5;
x.rueckgabeB = 3;
return x;
}
Ich war davon ausgegangen dass rueckgabewerte f() hier nur ein Platzhalter war, wie man das in einer beliebigen Funktion verwenden kann. Aber ich hätte das sozusagen 1:1 in meinen Code, in meine Funktion übernehmen sollen, oder?
Zuletzt bearbeitet:
Also der Grund warum deins nicht kompiliert, ist, dass du bei der Funktion den falschen Rückgabetyp angegeben hast. Denn du sagst:
Richtig wäre:
Code:
System :: double^ rechnung_max(double schrittweite) {
Richtig wäre:
Code:
rueckgabewerte rechnung_max(double schrittweite) {
Ja, das dachte ich mir schon. Ich habe deinen Code falsch interpretiert.
Also meine Funtion, die ich für die numerischen Berechnungen verwende ist diese:
Also meine Funtion, die ich für die numerischen Berechnungen verwende ist diese:
Wenn ich sie umschreibe in das, was du hergeschrieben hast, was ist der genaue Unterschied? Was macht das Wegfallen von System ::?System :: Double^ rechnung_max(double schrittweite) {...}
"System:: Double^" ist der Rückgabetyp. Den gibst du an, wenn deine Funktion nur 1 Wert zurück geben soll, eben einen Double.
Da du aber eine struct zurückgeben willst, musst du den Namen der struct angeben, in diesem Fall "rueckgabewerte".
Da du aber eine struct zurückgeben willst, musst du den Namen der struct angeben, in diesem Fall "rueckgabewerte".
Ah sehr gut, nun gehts. Das Problem war, dass ich nicht gecheckt hatte, dass du absichtlich genau den strukturnamen vor die Funktion geschrieben hast, ich dachte das war nur ein Beispiel für eine Funtion und habs deswegen nicht weiter beachtet.
Wie stelle ich das am besten mit der Ausgabe dann an? Vorher hatte ich
jetzt habe ich ja aber nur mehr eine Funktion, in der ich mehrere Rückgabewerte returne, also
Wie stelle ich das am besten mit der Ausgabe dann an? Vorher hatte ich
long double^ ergebnis_max = rechnung_max(Double:arse(schrittweite -> Text));
long double^ ergebnis_min= rechnung_min(Double:arse(schrittweite -> Text));
jetzt habe ich ja aber nur mehr eine Funktion, in der ich mehrere Rückgabewerte returne, also
Wie krieg ich das mit der Ausgabe nun am besten hin? Wenn ichrueckgabewerte minmax(double schrittweite) {
.
.
minimummaximum.d_rueckgabewert_min = minimum;
minimummaximum.d_rueckgabewert_max = maximum;
return minimummaximum; }
Wirft natürlich einen Fehler ...double^ ergebnis_min = minimax(Double:arse(schrittweite -> Text));
ja so in etwa haut das hin, super danke!!
Jetzt eine noch blödere Frage:
Ich gebe am Anfang in die Form einige Werte ein (per Textbox) und unten habe ich dann einen Button, der die Berechnung startet. Allerdings startet der nicht, wenn man ENTER drückt, sondern nur wenn man hintabbt, oder mit der Maus klickt. Ich vermute ich muss da ähnlich HTML einen Rahmen drumherum machen, oder?
Jetzt eine noch blödere Frage:
Ich gebe am Anfang in die Form einige Werte ein (per Textbox) und unten habe ich dann einen Button, der die Berechnung startet. Allerdings startet der nicht, wenn man ENTER drückt, sondern nur wenn man hintabbt, oder mit der Maus klickt. Ich vermute ich muss da ähnlich HTML einen Rahmen drumherum machen, oder?
Du musst einen Handler für die textBox anlegen, der auf das KeyPress Event reagiert. Wähl im Form-Editor die TextBox aus, dann gibt es (bei mir unten rechts) ein Eigenschaften Fenster. In dem Fenster gehst du oben auf den Blitz. Dann doppelklickst du hinter dem Wort "KeyPress".
Jetz solltest du in den Text-Editor kommen, wo du dann ungefähr folgendes machst (ist jetzt C#-Code, da ich kein C++.Net verfügbar habe):
Jetz solltest du in den Text-Editor kommen, wo du dann ungefähr folgendes machst (ist jetzt C#-Code, da ich kein C++.Net verfügbar habe):
Code:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Return)
{
//hier deine Berechnung starten
}
}
the_nobs
Commander
- Registriert
- März 2009
- Beiträge
- 2.431
Black schrieb:ja so in etwa haut das hin, super danke!!
Jetzt eine noch blödere Frage:
Ich gebe am Anfang in die Form einige Werte ein (per Textbox) und unten habe ich dann einen Button, der die Berechnung startet. Allerdings startet der nicht, wenn man ENTER drückt, sondern nur wenn man hintabbt, oder mit der Maus klickt. Ich vermute ich muss da ähnlich HTML einen Rahmen drumherum machen, oder?
Das was du machen willst, ist das der Button der "DEFAULT" Button ist
Vermute mal du hast einen MFC- Dialog gemacht. Im Editor Designer den Button die "Default"
eigenschaft geben!
Das wird aber jetzt alles recht umständlich und aufwendig
wenn du wenig Ahnung von C++ hast (und es scheint so...), würde ich mit GUI unter MFC gar nicht anfangen!
Falls du wirklich intresse daran hast, kauf bzw. borg dir ein Buch aus. Mit Frage und Antwort wird das SEHR umständlich.
Wenn du eine primitive GUI brauchst mach es entweder in Python bzw. F# und ruf dann deine C/C++ Funktionen auf.
Ähnliche Themen
- Antworten
- 18
- Aufrufe
- 855
- Antworten
- 12
- Aufrufe
- 1.734
- Antworten
- 26
- Aufrufe
- 6.484
- Antworten
- 4
- Aufrufe
- 5.676
- Antworten
- 10
- Aufrufe
- 2.969