HILFE: Anfängerprogramm - Dreiecksflächenberechnung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Lexus_ks

Betreff: HILFE: Anfängerprogramm - Dreiecksflächenberechnung

BeitragSa, Mai 20, 2006 16:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe zur Übung mein erstes Programm geschrieben:

Code: [AUSKLAPPEN]

fontvariable = LoadFont("verdana") ; Font laden
SetFont fontvariable ; Font setzen

grundseite = Input("Gib die Länge der Grundseite in mm ein: ")
hoehe = Input("Gib die Höhe in mm ein: ")
flaeche = 0

flaechenberechnung (grundseite,hoehe)

Function flaechenberechnung (grundseite, hoehe)

flaeche = grundseite*hoehe/2

Return flaeche

End Function

Print "Das Dreieck hat eine Fläche von"
Print flaeche
Print "mm²"

WaitKey


Aber es gibt für Fläche immer nur 0 aus -__-
Was ist falsch?
Übrigens wollte ich mal fragen, wie es geht, dass ich mit dem Print Befehl sowas ausgeben :
Print variable1 "text" variable 2

PS: Nicht über das Proggi lachen, ich muss mich erstmal ein bisschen in die Materie klabustern ^^

Bud

BeitragSa, Mai 20, 2006 17:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
fontvariable = LoadFont("verdana") ; Font laden
SetFont fontvariable ; Font setzen

grundseite = Input("Gib die Länge der Grundseite in mm ein: ")
hoehe = Input("Gib die Höhe in mm ein: ")
flaeche = flaechenberechnung (grundseite,hoehe) ; x

Function flaechenberechnung (grundseite, hoehe)
   flaeche = grundseite*hoehe/2 ; Die Variable "flaeche" ist hier nur eine Lokale Variable, verändert also nicht die da oben ^
   Return flaeche ; Gibt den Wert der Variable an die Variable oben (mit x gekennzeichnet) aus
End Function

Print "Das Dreieck hat eine Fläche von " + flaeche + " mm²" ; So (oder mit Write()) vermeidest du die Zeilenumbrüche ^^
WaitKey

So ists's richtig, habe den Fehler im Code kommentiert.
 

Lexus_ks

BeitragSa, Mai 20, 2006 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für deine auführliche Antwort Very Happy , dann will ich mal frishc ans Werk ^^

Aber mal ein weiterführender Gedanke....mal angenommen ich würde die Variable "Fläche" nicht nur zur Berechnung mit dieser Funktion nutzen wollen....das geht ja dann gar nicht, da ich bei der Definition schon festelege, dass ich sie für diese eine Funktion (flaechenberechnung) nutze.

BladeRunner

Moderator

BeitragSa, Mai 20, 2006 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
flaeche = flaechenberechnung (...,...)

Wenn eine Funktion was zurückgibt, musst du es einer Variable zuweisen.
Alternatriv kannst Du globale Variablen einrichten, Die im ganzen Code gültig sind. (allerdings ein eher unglücklicher Weg, denn die Variablentrennung macht Sinn).
Bislang ist es so dass flaeche als Variable nur in der Funktion existiert und zu existieren aufhört wenn die Funktion verlassen wird.
Wenn Du es machst wie ich oben gezeigt hab, existiert noch eine variable flaeche ausserhalb der Funktion, und die kriegt dann den Wert zugewiesen.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

Dreamora

BeitragSa, Mai 20, 2006 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Randbemerkung: Obiger Code ist nicht ganz fehlerfrei, da er nur mit Integer rechnet.
Eigentlich sollte er so aussehen:


Code: [AUSKLAPPEN]

Function flaechenberechnung# (grundseite#, hoehe#)
   flaeche# = grundseite*hoehe/2.0 ; Die Variable "flaeche" ist hier nur eine Lokale Variable, verändert also nicht die da oben ^
   Return flaeche ; Gibt den Wert der Variable an die Variable oben (mit x gekennzeichnet) aus
End Function
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Lexus_ks

BeitragSa, Mai 20, 2006 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, das wäre dann wohl noch so das I-Tüpfelchen ^^ Danke für den Verbesserungsvorschlag.

Jean

BeitragSo, Mai 21, 2006 20:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Hier mal mein Programm, welches ich auf mein Taschenrechner Basic umgeschrieben habe und so bei der Prüfung ohne viel Aufwand eine sehr gute Note bekommen habe. Laughing

Code: [AUSKLAPPEN]
a#=Input$ ("A ")
b#=Input$ ("B ")
c#=Input$ ("C ")

h#=Input$ ("H ")

p#=Input$ ("P ")
q#=Input$ ("Q ")

Repeat

z = 0

If p# > 0 And q# > 0 And c# = 0
c# = q# + p#
z = 1
EndIf

If c# > 0 And q# > 0 And p# = 0
p# = c# - q#
z = 1
EndIf

If c# > 0 And p# > 0 And q# = 0
q# = c# - p#
z = 1
EndIf

If p# > 0 And q# > 0 And h# = 0
h# = p# * q#
h# = Sqr# (h#)
z = 1
EndIf

If h# > 0 And q# > 0 And p# = 0
x# = h# * h#
p# = x# / q#
z = 1
EndIf

If h# > 0 And p# > 0 And q# = 0
x# = h# * h#
q# = x# / p#
z = 1
EndIf

If p# > 0 And c# > 0 And a# = 0
a# = Sqr# (p# * c#)
z = 1
EndIf


If q# > 0 And c# > 0 And b# = 0
b# = Sqr# (q# * c#)
z = 1
EndIf

If b# > 0 And c# > 0 And q# = 0
x# = b# * b#
q# = x# / c#
z = 1
EndIf

If a# > 0 And c# > 0 And p# = 0
x# = a# * a#
p# = x# / c#
z = 1
EndIf

If a# > 0 And b# > 0 And c# = 0
x# = a# * a#
y# = b# * b#
c# = Sqr# (x# + y#)
z = 1
EndIf

If a# > 0 And c# > 0 And b# = 0
x# = a# * a#
y# = c# * c#
b# = Sqr# (y# - x#)
z = 1
EndIf

If b# > 0 And c# > 0 And a# = 0
x# = b# * b#
y# = c# * c#
a# = Sqr# (y# - x#)
z = 1
EndIf

Until z = 0

Print "a: " + a#
Print "b: " + b#
Print "c: " + c#

Print "h: " + h#

Print "p: " + p#
Print "q: " + q#
Print "Fläche: " + c# * h# / 2
WaitKey

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group