Basic TI 84 calculator Heron-verfahren Programmieren

Deine Rechnung ist fehlerhaft.

Grundidee ist das ein Quadrat mit dem Flächeninhalt A die Seitenlänge Wurzel(A) hat.

Ausgangspunkt ist ein beliebiges Rechteck mit dem Flächeninhalt A. Eine Seite (X) kannst du frei wählen die andere (Y) mußt du berechnen.

Y=A/X

Dann kommt deine Schleife wo du X und Y immer neu berechnen läßt

X = (X+Y)/2
Y = A/X

Dabei nähern sich X und Y an so dass die am Ende gleich sind und du hast dann X=Y=Wurzel(A)
 
danke ich meld mich morgen nochmal wenn es ein Problem gibt ^^
Ergänzung ()

image.jpg

Bekomme trotzdem nicht das gewünschte Ergebniss von 9 heraus was tun :/
 
4. und 7. Zeile statt Y/X->T muß es X/Y->T heißen.
8. Zeile statt Disp I,C einfach mal Disp Y oder Disp T oder wenn du beides haben willst Disp Y, T probieren.

Dann funktioniert es auch.
 
Ich muss dir ehrlich danken, ich Habe es verstanden
Danke danke
Und es funktioniert
 
Schön, dass es jetzt funktioniert.
Es gibt auch noch ne Möglichkeit ohne die For-Schleife, so das das Prgramm solange läuft bis es die exakte Lösung hat.

Code:
:Prompt A,X
:A/X->Y
:While X "Ungleich-Zeichen" Y
:(X+Y)/2->X
:A/X->Y
:Disp X
:End

Oder mit 6 Zeilen Code

Code:
:Prompt A,I
:(A+1)/2->X
:For(Z,1,I)
:(X+(A/X))/2->X
:Disp X
:End

Wie man sieht, gibt es verschiede Wege um zur Lösung zur kommen.
 
Zuletzt bearbeitet:
Ich hab noch ne Frage ist es möglich mit dem Befehl Disp mir die einzelnen rechenwege anzuzeigen ??
Wäre das dann:
:X/A->B
Disp B
: (A+B)/2->Y
Disp Y
:Y/X->T
Disp T
For(Z,1,I)
.....
 
Du kannst einfach deine ganze Rechnungen machen und dann mit

Code:
:Disp B,Y,T
alles ausgeben lassen, pro Variable macht er automatisch eine neue Zeile in der Ausgabe.
 
Danke.
Da hab ich noch eine Frage
Wenn die Zahl dir berechnet werden soll ein Minus Wert ist, möchte ich gerne das es plus gerechnet wird.
Und bei Plus minus.
Z.B
-2+2=0
2-2=0
Wie kann ich das denn schreiben in meinen Taschenrechner ?
 
Klassischer Fall für bedingte Anweisung und Verzweigung
Syntax in Ti-Basic ist folgender:
Code:
:If "Bedingung"
:Then
:"Anweisung(en)"
:Else
:"Anweisung(en)"
:End
 
: Disp "YA,XB,YC,XD
: Prompt A,B,C,D
: (A-C)/(B-D)->M
: Disp "M=",M
:M*B->F
:IF "F"
:Then
:F-F->0
:Else
:-F+F->0
:If "F"
:C-F->Y
:Else
:C+F->Y
: Disp "Y=",Y
:End


ich hab bisschen geübt.
Ich versuche gerade das Programm zuschreiben um von einer Geraden die Funktionsgleichung zu berechnen.
Da ich jetzt mit If,Else,Then nicht weiter komme da ein error immer kommt frage was sit der Fehler des codes
 
Zuletzt bearbeitet:
If-Else funktioniert nur nach folgendem Schema:

Code:
:If Bedingung:Then
:Code
:Else
:Code
:End

Zu jedem Then muss also auch ein End existieren, damit der Interpreter weiß, wo er hinspringen soll.

Was auch geht:
Code:
:If Bedingung
:Anweisung
Allerdings ist damit kein Else möglich und auch nur eine Anweisung.
 
trotzdem kommt ein fahler was ist den in meinem code falsch??
 
Schau nochmal genau drüber. Das zweite If hat kein Then und irgendwo fehlt da auch noch ein End.

Übrigens, "da kommt ein Fehler ist keine gute Fehlerbeschreibung. Wenigstens dabei schreiben, was für ein Fehler kommt, dann können wir auch besser helfen in Zukunft ;)
 
: Disp "YA,XB,YC,XD
: Prompt A,B,C,D
: (A-C)/(B-D)->M
: Disp "M=",M
:M*B->F
:IF "F"
:Then
:F-F
:Else
:F+F
:End
:If "F"
:Then
:C-F->Y
:Else
:C+F->Y
:End
: Disp "Y=",Y
:End

Sry.
Der Taschenrechner markiert Then was ist denn falsch ??
 

"F" ist keine Bedingung deswegen gibt es ein "ERR: DATA TYPE" und wenn du auf Goto gehst springt er zum "Then"

Bedingung wäre z.B. folgendes:

Code:
:If F<0
Code:
:If F>0
Code:
:If F=0


Das allerletzte End dürfte auch noch ein Fehler geben, weil es keinen Bezug hat.


Code:
:If F<0
:Then
:C-F->Y
:Else
:C+F->Y
:End

Bei dem Beispiel rechnet er falls F kleiner 0 ist Y=C-F in jedem anderen Fall (also bei F=0 oder F>0) rechnet er Y=C+F
 
Zuletzt bearbeitet:
: Disp "XA,YB,XC,YD
: Prompt A,B,C,D
: (B-D)/(A-C)->M
: Disp "M=",M
:M*B->F
:IF F<0
:Then
:F+F->Y
:Else
:F-F->Y
:
:If F<0
:Then
:B-F->C
:Else
:B+F->C
:End
: Disp "C=",C
:End

bei den koordinaten (-2|3)und(4|-1)
rechnet er weiter und man bekommt auch sein b oder c raus.

jedoch bei(-4-1)und (3|1)
macht er schon bei der M schon Schluss und rechnet nicht mehr weiter, er rechnet das c nicht weiter aus.
 
Code:
:Disp "XA,YB,XC,YD
:Prompt A,B,C,D
:(B-D)/(A-C)->M
:Disp "M=",M
:M*B->F
:IF F<0
:Then 
:F+F->Y
:Else
:F-F->Y
:
:If F<0
:Then
:B-F->C
:Else 
:B+F->C
:End
:Disp "C=",C
:End

Deine zweiter If_Then_Else_End-Block und Disp C wird nur für den Fall F>0 bzw. F=0 ausgeführt da in Zeile 11 kein End steht und es somit alles noch zum "Else" vom ersten If_Then_Else-Block gehört
 
Code:
: Disp "XA,YB,XC,YD
:Prompt A,B,C,D
: (B-D)/(A-C)->M
: Disp "M=",M
:M*B->F
:IF F<0
:Then
:F+F->Y
:Else
:F-F->Y
:End
:If F<0
:Then
:B-F->C
:Else
:B+F->C
:End
: Disp "C=",C

nun hab ich das Problem wieso ist mein Ergebnis Für C am ende falsch ??
also bei der koordinate (-4-1)und (3|1) kommt das falsche raus er rechnet trotzdem -
statt plus
 
Zuletzt bearbeitet:
Wenn C falsch ist, wird deine Rechnung falsch sein.

Du willst m und n für f(x)=y=mx+n aus Zweipunkten P1(x1|y1) und P2(x2|y2) berechnen?

Da brauchst du nur m mit m=(y2-y1)/(x2-x1) und n mit n=y1-m*x1 oder n=y2-m*x2 berechnen ohne irgendwelche bedingten Anweisungen.
 

Ähnliche Themen

Zurück
Oben