Guten Morgen,
ich hoffe nicht das der Titel zu irreführund ist oder es ihn gar schon
gab, also meine Frage besteht darin wie ich in einem C++ Programm in der
GUI speziell in einem Label Zahlen mit Nachkommastellen errechne und
ausgeben lassen kann.
Habe dazu schon etwas gegoogelt und bin dabei auf dieses Forum gestoßen,
dabei habe ich auch schon viele Beiträge zu dem Thema gesehen nur keins
gefunden welches mir wirklich weitergeholfen hat.
So nun zum eigentlichen Problem:
zur Einführung ein Ausschnitt von Code:
Lösung32->Text=Convert::ToString(Convert::ToInt32(Lösung25->Text)/(Conve
rt::ToInt32(Lösung31->Text)))
LösungXX steht dabei für ein Label in denen sich Zahlen bzw. schon
vorher errechnete Zahlen befinden. Wenn also nun 4/3 gerechnet wird dann
erhalte ich 1 als Ausgabe und keine Kommazahl, nun ich habe habe auf
meinem Google weg den Begriff "float" gefunden und auch herrausgelesen
das dieser auf 7 Stellen genau ist, das würde für meine simple Rechnung
ausreichen. Aber ich habe nirgends gefunden wie ich den in meinen Code
einbinde. Nach langer Rede (ich entschuldige mich dafür) kurzer Sinn:
Wie binde ich "float" in meinen Code ein?
MfG Markus
P.S.: Ich bin für jede Hilfe dankbar =)
Tut mir Leid so funktioniert das nicht. Das sind ESSENTIELLE Grundlagen,
also besorg dir ein C++ Buch und arbeite das durch. Falls es dann noch
Fragen geben sollte, kannst du gerne fragen. Aber ein Mindestmaß an
Eigeninitiative muss schon gefordert sein dürfen. C++ lernt man nicht
einfach so.
Das soll ein gut gemeinter Rat sein. Es ist nur so, dass es schon öfter
welche gab, die dachten sich um eine ordentliche Lektüre drücken zu
können und dann denken das Forum mit Nichtigkeiten vollmüllen zu müssen.
Durch das ToInt32 bekommst du einen Integer.
Integer/Integer wird als Integerdivision berechnet.
Such dir die Convertmethode für float (oder double) raus und wende
das an.
Es geht auch mit einem cast.
alles klar, dann kämpf ich mich da mal durch ^^
trotzdem Danke für die Hilfe
Mark Brandis schrieb:> Ein Veriablenname mit nem Umlaut drin?
funktioniert in Visual Studio, also hab ich schon getestet... eigenartig
geb ich zu, aber klappt tatsächlich.
Also einfach kein Forum für Anfänger, gut dann kann dieser Beitrag
gelöscht werden.
MfG Markus
Markus schrieb:> funktioniert in Visual Studio, also hab ich schon getestet... eigenartig> geb ich zu, aber klappt tatsächlich.
Ist trotzdem keine gute Idee.
Halte dich an die einfache Regel: Alles was ein Amerikaner nicht kennt,
ist in Programmquelltext von Übel.
> Also einfach kein Forum für Anfänger,
Anfänger schon. Aber es gibt auch eine untere Niveaugrenze, unter der
man noch nicht mal Anfänger ist und unter der es keinen Sinn hat. Auch
wer gerade mit einer Lehre als KFZ-Mechaniker anfängt, sollte schon
wissen, wie rum man einen Schraubenzieher hält. In diesem Bereich
leuchtet das jedem ein, nur seltsamerweise denkt die Mehrheit, man
bräuchte keine Grundlagen um Programmieren zu können. Ein paar
Stichworte auf einer Web-Seite aufschnappen bzw. ein paar Fragen in
einem Forum stellen reicht da einfach nicht. Ordentliche Literatur hat
nicht ohne Grund Seitenzahlen von 200 aufwärts.
FAQ: Datentypen in Operationen
(Das dort gesagte gilt gleichermassen für C++)
Dirk B. schrieb:> Such dir die Convertmethode für float (oder double) raus und wende> das an.
Danke!
Obwohl ich jetzt im Nachhinein zugeben muss das hätte ich mir auch
denken können (naja kommt davon wenn man gegen 00:00 programmiert) aber
vielen Dank für diesen Rat und die große Hilfe hier im Forum =)
MfG Markus
Karl Heinz schrieb:> Anfänger schon. Aber es gibt auch eine untere Niveaugrenze
Okay, dann kann ich nichts weiter machen als mich für diesen Beitrag
hier zu entschuldigen.
Die Tatsache das ich mein Buch: "C++: Objektorientiertes Programmieren
von Anfang an" nur bis zur Hälfte gelesen habe dürfte wahrscheinlich
Aufschluss darüber geben warum ich hier solche Fragen stelle.
Also nochmal tut es mir leid und ihr könnt diesen Beitrag vergessen.
MfG Markus
Markus schrieb:> Die Tatsache das ich mein Buch: "C++: Objektorientiertes Programmieren> von Anfang an" nur bis zur Hälfte gelesen habe dürfte wahrscheinlich> Aufschluss darüber geben warum ich hier solche Fragen stelle.
Die ürsprüngliche Frage war:
Markus schrieb:> Wie binde ich "float" in meinen Code ein?
Datentypen sind mit das erste, was man lernt. Sie gehören zu den
Grundlagen.
Entweder du hast das Buch nicht richtig gelesen oder
das Buch setzt selber Grundkenntnisse voraus (die du nicht hast) oder
das Buch ist schlecht.
Was meinst du?
Ach, und schließe niemals von "in Visual Studio geht das" darauf, dass
es auch woanders so funktioniert. Der C++ (und auch C)-Standard gibt den
Compilerbauern bei einigen Dingen Freiheiten in der Auslegung.
Mark Brandis schrieb:> Ein Veriablenname mit nem Umlaut drin?>> Skurril.
Viel schlimmer. Visual Studio 2013 compiliert sogar sowas ohne mit der
Wimper zu zucken:
1
intmain(void)
2
{
3
intößf£ÆÿþȈÇże=23;
4
return0;
5
}
In Visual Studio ist die Warnstufe standardmaessig auf /W3 gestellt,
dadrueber gibt es noch /W4 und /Wall.
Die Warnstufe auf /Wall und am besten noch auf /Werror zu stellen hat
allerdings keinen Mehrwert, da man sobald man eine Includeanweisung hat
(und das is meistens zwangsweise so, z.B. iostream, string, string.h,
stdio.h, ...) mit Fehlermeldung erschlagen wird (die meisten sind:
1
warning C4514: '<hier beliebigen funktionsnamen einfuegen>': Nicht referenzierte Inlinefunktion wurde entfernt
oder aber:
1
warning C4710: '<hier beliebigen funktionsnamen einfuegen>': Funktion ist nicht "inline"
). Bei der Fülle an Fehlemldungen die mir hier gerade entgegenschlaegt,
sind Umlaute bzw. Sonderzeichen in Variablennamen echt das kleinste
Problem an der ganzen sache. Es ist praktisch sinnlos und gleichermassen
unmoeglich unter Visual Studio mit /Wall und/oder /Werror zu
compilieren. Aber wer will schon Warnungen sehen... sind ja nur
warnungen und keine fehler, und damit ist doch alle super...
Kaj G. schrieb:> Mark Brandis schrieb:>> Ein Veriablenname mit nem Umlaut drin?>>>> Skurril.> Viel schlimmer. Visual Studio 2013 compiliert sogar sowas ohne mit der> Wimper zu zucken
Das ist in C++ ja auch nicht per se verboten. Allerdings ist es keine
gute Idee, da man sich jede Menge Probleme damit einhandeln kann.
Sei doch froh, dass Microsoft es wenigstens nicht wie bei VBA macht,
also so, dass bei der deutschen Version auch alle vorhandenen
Bibliotheksfunktionen deutsche Namen haben.
Kaj G. schrieb:> Viel schlimmer. Visual Studio 2013 compiliert sogar sowas ohne mit der> Wimper zu zucken:> int ößf£ÆÿþȈÇże = 23;
ISO/IEC 14882:2011
An identifier is an arbitrarily long sequence of letters and digits. Each
universal-character-name in an identifier shall designate a character
whose encoding in ISO 10646 falls into one of the ranges specified in
E.1.
...
E.1 Ranges of characters allowed
00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6,
00D8-00F6, 00F8-00FF
0100-167F, 1681-180D, 180F-1FFF
200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F
2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF
3004-3007, 3021-302F, 3031-303F
3040-D7FF
F900-FD3D, FD40-FDCF, FDF0-FE44, FE47-FFFD
10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD,
60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD,
B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFFD
Ich glaube, in g++ gibt es dafür einen Schalter (experimental feature),
weil es damit nicht immer ganz problemslos funktioniert. Interessiert
mich aber nicht die Bohne, da es ohnehin eine Sch...idee ist - da sind
wir uns wohl alle einig ...
> In Visual Studio ist die Warnstufe standardmaessig auf /W3 gestellt,> dadrueber gibt es noch /W4 und /Wall.> Die Warnstufe auf /Wall und am besten noch auf /Werror zu stellen hat> allerdings keinen Mehrwert, da man sobald man eine Includeanweisung hat> (und das is meistens zwangsweise so, z.B. iostream, string, string.h,> stdio.h, ...) mit Fehlermeldung erschlagen wird
Ja, das ist in der Tat ätzend.
Halblanghaarkatzenhalter schrieb:> E.1 Ranges of characters allowed> ...
Das £-Zeichen ist in in dieser Liste nicht enthalten, deswegen sollte
der Compiler eine Fehlermeldung ausgeben. Tut dies der Compiler in
Visual Studio 2013 nicht, ist dies ein Bug.
Yalu X. schrieb:> Das £-Zeichen ist in in dieser Liste nicht enthalten
Hattest du das im Kopf? Nicht schlecht.
Mark Brandis schrieb:>> Lösung32->Text> Ein Veriablenname mit nem Umlaut drin?> Skurril.
Keine Ahnung, wie das bei C++/CLI überhaupt ist.
Halbschrat schrieb:> Yalu X. schrieb:>> Das £-Zeichen ist in in dieser Liste nicht enthalten>> Hattest du das im Kopf? Nicht schlecht.
Sag bloß, du hast das nicht sofort gesehen ;-)
Nein, nein, ich habe den Code mangels Visual Studio einfach mal durch
den Clang geschickt, und der meckert das £-Zeichen an. Ich wusste also
schon, nach welchem Zeichen ich in der Liste suchen musste, und da diese
aufsteigend sortiert ist, ging das ganz fix :)
Interessanterweise verbietet der Standard das £- und das $-Zeichen¹,
akzeptiert aber das €-Zeichen sowie die meisten anderen Währungssymbole.
Haben sich denn die Amis und die Briten bei den Treffen des ISO-Gremiums
so schlecht benommen? ;-)
———————————
¹) Beim $-Zeichen wird es wohl daran liegen, dass dieses von einigen
Compilern in Spracherweiterungen bereits genutzt wird, aber bei £ als
Nicht-ASCII-Zeichen wundert es mich schon etwas.
Yalu X. schrieb:> Beim $-Zeichen wird es wohl daran liegen, dass dieses von einigen> Compilern in Spracherweiterungen bereits genutzt wird
OS-9/68k verwendete das $-Zeichen für Betriebssystemaufrufe, aber ich
habe mit OS-9 gearbeitet, als es dafür noch keinen ANSI-C-Compiler gab
...
Brr. Schrecklich.
Dirk B. schrieb:> Entweder du hast das Buch nicht richtig gelesen oder> das Buch setzt selber Grundkenntnisse voraus (die du nicht hast) oder> das Buch ist schlecht.>> Was meinst du?
Offenbar irgend so ein 'Managed C++' Verschnitt.
Markus schrieb:> Die Tatsache das ich mein Buch: "C++: Objektorientiertes Programmieren> von Anfang an" nur bis zur Hälfte gelesen habe dürfte wahrscheinlich> Aufschluss darüber geben warum ich hier solche Fragen stelle.
Es dürfte eher darüber Aufschluss geben, dass dieses Buch nicht
unbedingt für Komplett-Anfänger geeignet ist, sondern schon einen
gewissen Grundlevel voraussetzt. Denn nach der Lektüre eines
Einsteigerbuches, sollte der Leser schon in der Lage sein, zu erklären
warum
1
3.0 * 9 / 6
und
1
3.0 * ( 9 / 6 )
bzw
1
3 * 9 / 6
bzw.
1
3 * ( 9 / 6 )
unterschiedliche Ergebnisse liefern, auch wenn sie mathematisch gesehen
äquivalent sind. Der Unterschied hat ganz alleine damit zu tun, dass
neben den Rechenregeln es in C++ (und C) auch so etwas wie Datentypen
gibt, die die Art der Auswertung beeinflussen.
Und nein. Hier handelt es sich nicht um esoterisches Zusatzwissen, das
nur in ganz seltenen Fällen benötigt wird. Bei Datentypen und ihren
Auswirkungen handelt es sich um ganz zentrale Elemente aller typisierten
Sprachen.
Hi,
man sollte hier noch ergänzen, dass es nicht DAS C++-GUI gibt. Alle
Programmiersprachen mit einem C im Namen (und bestimmt noch viele
weitere) definieren in ihrem Standard nämlich gar keine
Oberflächenbibliotheken.
Hält man sich also strikt an den Standard, dann hat man nur
Konsolenprogramme.
Es gibt natürlich jede Menge Oberflächenbibliotheken, die man dann mit
seiner Programmiersprache der Wahl auch nutzen kann.
Allerdings setzen manche Oberflächen auch bestimmte Frameworks voraus
und damit auch bestimmte Programmiersprachen.
Z.B. braucht man eine .NET Programmiersprache (C#, Managed C++, Visual
Basic .NET etc.), wenn man Oberflächen mit Windows Forms oder mit WPF
erzeugen möchte.
Bei Markus sieht es so aus, als ob er mit Managed C++ arbeitet und damit
versucht C++ zu lernen. Dummerweise ist das, was Microsoft mit Managed
C++ geschaffen hat, alles andere als einsteigerfreundlich, da für die
Anbindung an das .NET Framework viele Erweiterungen des C++-Standards
vorgenommen wurden, die man als Einsteiger kaum verstehen kann. Es gibt
z.B. drei Möglichkeiten Klassen zu erzeugen: Stack, Heap und Managed
Heap.
Was ich damit sagen will:
Will man .NET machen (WPF oder Win Forms), dann sollte man tunlichst C#
verwenden.
Möchte man (unmanaged) C++ lernen, dann würde ich Oberflächen erst
einmal ganz ausklammern. Man kann mit Konsolenprogrammen genug
Erfahrungen sammeln!
Managed C++ mit dem Visual Studio wäre jedenfalls das Letzte, was ich
einem Einsteiger empfehlen würde.
Gruß
Oliver
Oliver R. schrieb:> Möchte man (unmanaged) C++ lernen, dann würde ich Oberflächen erst> einmal ganz ausklammern. Man kann mit Konsolenprogrammen genug> Erfahrungen sammeln!
Die Empfehlung würde ich sogar auf andere Sprachen (inklusive C#)
ausweiten.
> Managed C++ mit dem Visual Studio wäre jedenfalls das Letzte, was ich> einem Einsteiger empfehlen würde.
Sehe ich aus so. Managed C++ wurde eigentlich aus zwei Gründen
eingeführt: Erstens, um native Bibliotheken unter .NET nutzbar zu machen
(man kann in Managed C++ bzw. C++/CLI einfach zwischen managed und nativ
"umschalten"). Zweitens, um C++-Programmierern den Einstieg in die
.NET-Welt etwas zu erleichtern. Der zweite Grund ist heute kaum noch
relevant, da sich C# weiterentwickelt hat und durchaus zu den
arrivierten Programmiersprachen gehört. Der erste spielt nur noch in
wenigen Szenarien eine Rolle; inzwischen gibt es ein ganzes Arsenal an
.NET-Bibliotheken - ganz abgesehen von den umfangreichen Bibliotheken,
die direkt im Paket kommen. Sinnvoll sind fast nur noch Wrapper um
hochoptimierte C++-Librarys (z.B. mit numerischen Funktionen).
C++/CLI ist also ein Werkzeug, dessen Einsatz in ganz bestimmten Fällen
sinnvoll sein kann. Aber damit C++ lernen? Besser nicht ...