Anfänger-Programm: Rechnung

Anfängerfragen zum Programmieren mit PureBasic.
Abraxus
Beiträge: 22
Registriert: 13.01.2011 15:23

Anfänger-Programm: Rechnung

Beitrag von Abraxus »

Hallo Leute, ich beschäftige mich seit ein paar Tagen erstmals mit dem Programmieren und habe mich für den Einstieg für PureBasic entschieden.
Mein erstes Ziel ist es, ein kleines Rechenprogramm zu entwickeln. Hierfür lerne ich zur Zeit an mereeps Tutorial.
Würde aber nebenher gerne schon mal wissen wie in etwa der Code für folgenden Programmablauf aussehen würde:

Code: Alles auswählen

(Das Programm fragt nach folgenden Daten)
Nenne das Gesamtvolumen (in Kg): 1036 ; vom Benutzer eingegeben
Nenne die Menge von Stoff A (in g pro 1000 Kg): 100 ; vom Benutzer eingegeben

(Das Programm berechnet die Menge von Stoff A für das Gesamtvolumen aus)
100 / 1000 * 1036

(Das Programm gibt das Ergebnis aus)
Für das Gesamtvolumen von 1036 Kg werden 103,6 g Stoff A benötigt!
Ich hoffe jemand hat Lust und Zeit mir hier zu helfen.
Ich arbeite mit der Demo von PB

Beste Grüße
Zuletzt geändert von Abraxus am 18.01.2011 15:08, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: brauche Hilfestellung

Beitrag von Kiffi »

wenn's für's erste eine einfache Konsolenanwendung sein darf,
dann schau Dir hierzu mal die Befehle:

OpenConsole(), Input() und PrintN()

in der Hilfe an. Der Rest ist eine einfache mathematische Operation.

Grüße ... Kiffi
a²+b²=mc²
Abraxus
Beiträge: 22
Registriert: 13.01.2011 15:23

Re: brauche Hilfestellung

Beitrag von Abraxus »

danke! habe jetzt mal bisschen probiert:

Code: Alles auswählen

OpenConsole()
ConsoleTitle("Paste Calculator")
PrintN("Rezeptermittlung:")
Print("Nenne das Gesamtvolumen (in Kg): ")
Zahl1 = Val(Input())
Print("Nenne die Menge von Stoff A (in 100g pro 1000 Kg): ")
Zahl2 = Val(Input())
Ergebnis.l = Zahl2 / 1000 * Zahl1
MessageRequester("Ergebnis","Das Ergebnis ist: "+Str(Ergebnis),0)
CloseConsole()
End
leider wird anstatt 103,6 das Ergebnis 0 ausgegeben, ich denke es liegt an der Kommazahl, richtig?
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Re: brauche Hilfestellung

Beitrag von PureLust »

Abraxus hat geschrieben:..., ich denke es liegt an der Kommazahl, richtig?
Nur kurz und knapp und ohne es getestet zu haben (geht hier von unterwegs auf'm iPad ja leider nicht):

Das Problem (dass Du immer 0 als Ergebnis bekommst) dürfte hieran liegen:

Code: Alles auswählen

Ergebnis.l = Zahl2 / 1000 * Zahl1
Da Du Integer- (also Ganzzahl-) Variablen benutz, wird zuerst "Zahl2 / 1000" berechnet und das Ergebnis als Ganzzahl zwischengespeichert. Bei Zahl2=100 wäre das Ergebnis 0.1 was bei einer Berechnung und Speicherung als Ganzzahl 0 ergeben würde. Die nachfolgende Multiplikation würde dann also "0 * Zahl1" berechnen, was als Ergebnis dann also immer 0 ergibt.

Wenn Du die Formel in "Zahl1 * Zahl2 / 1000" ändern würdest, käme schon mal ein etwas anderes Ergebnis heraus (da dann zuerst die Multiplikation und erst danach die Division berechnet würde) - jedoch immer noch nicht das korrekte, da nicht mit Nachkommastellen gerechnet wird.

Abhilfe sollte die Umstellung auf Fließkomma-Variablen bringen:

- benutze statt den Integer-Variablen Zahl1, Zahl2 und Ergebnis die Fliesskomma-Varianten Zahl1.f, Zahl2.f und Ergebnis.f
- benutze anstatt Val() => ValF() und statt Str() => StrF()

Gruß, PL.

PS: Noch so nebenbei: Kg ist eine Gewichtsangabe und keine Volumenangabe. Somit sind Formulierungen wie "Nenne das Gesamtvolumen (in Kg): " sehr missverständlich.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: brauche Hilfestellung

Beitrag von NicTheQuick »

@Abraxus:
Hier im Forum benötigen viele Leute eine Hilfestellung. Von daher ist dein Threadtitel nicht gerade sonderlich aussagekräftig. Bitte editiere also deinen ersten Post und wähle einen zum Thema passenderen Threadtitel aus. Danke!
Abraxus
Beiträge: 22
Registriert: 13.01.2011 15:23

Re: brauche Hilfestellung

Beitrag von Abraxus »

thx an PureLust, sehr hilfreich
auch das mit der Volumenangabe :lol:

folgender Code funktioniert nun:

Code: Alles auswählen

OpenConsole()
ConsoleTitle("Paste Calculator")
PrintN("Rezeptermittlung:")
Print("Nenne die Gesamtmenge (in Kg): ")
Zahl1.f = ValF(Input())
Print("Nenne die Menge von Stoff A (in 100g pro 1000 Kg): ")
Zahl2.f = ValF(Input())
Ergebnis.f = Zahl2 / 1000 * Zahl1
MessageRequester("Ergebnis","Das Ergebnis ist: "+StrF(Ergebnis),0)
CloseConsole()
End
Antworten