Stringproblem

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Triton

Betreff: Stringproblem

BeitragSo, Feb 27, 2005 2:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier ein kleineres Programm, dass Zahlen addieren soll (ja, mir ist bekannt, dass BB das auch so kann Smile).

Addiert mal 2 10- oder mehr-stellige Zahlen und achtet auf die Ergebnisse. Die dürften etwa dem entsprechen, was man im Allgemeinen als Falsch betitelt.
Was mich vorallem irritiert ist, dass manchmal sogar ein Minus vor dem
ergebnis steht. Da das ganze über stringoperationen läuft, wundert es
mich doch, wie es dazu kommt.

Code: [AUSKLAPPEN]

Graphics 800,600,32,2

zahl1$=Input("Zahl1: ")
zahl2$=Input("Zahl2: ")

Text 10,40,"Zahl1 + Zahl2 = "+addieren(zahl1$,zahl2$)
WaitKey


;---
Function addieren(a$,b$)

l1=Len(a$)
l2=Len(b$)
If l1<l2 Then
   l=l1:l1=l2:l2=l             ;stellt sicher, dass l1 und a$ stets die größere Zahl enthält
   c$=a$:a$=b$:b$=c$
End If
If l2<l1 Then
   c$=""
   For oft=1 To l1-l2            ;die kürzere der Zahlen (jetzt b$) vorne mit 0en ausfüllen
      c$=c$+"0"
   Next
   b$=c$+b$
End If

For pos = 1 To l1-1 Step 1         ;addiert von l nach r stellenweise
   za1$=Mid(a$,pos+1,1)
   zb1$=Mid(b$,pos+1,1)
   aim1=Int(za1$)+Int(zb1$)
   If aim1 => 10 Then ue=1
   If aim1 < 10 Then ue=0
   za2$=Mid(a$,pos,1)
   zb2$=Mid(b$,pos,1)
   aim2=Int(za2$)+Int(zb2$)+ue
   aim$=aim$+Right(Str(aim2),1)
Next
aim$=aim$+Right(Str(aim1),1)
Return aim$

End Function


vermutlich ein einfacher dummer Fehler, den ich gerade übersehe,
aber...ich seh ihn halt nicht oO
Coding: silizium-net.de | Portfolio: Triton.ch.vu

BladeRunner

Moderator

BeitragSo, Feb 27, 2005 9:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo Triton.
Deine Funktion arbeitet einwandfrei.
Nur hast du den Rückgabetyp nit festgelegt, und daher wird dein Ergebnisstring in einen integer gecastet. Und das geht >2 Milliarden eben schief.

einfach:
function addieren$(zahl1$,zahl2$) und alles wird gut.


Solche Fehler sind es die einen zur Verzweiflung treiben können Wink
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

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Feb 27, 2005 10:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich habe auch schon mal eine solche Function erstellt für das berechnen von Möglichkeiten bei den Türmen von Hanoi!
deswegen habe ich deine gleich mal getestet, und mir ist aufgefallen das das mit den Überschlägen nicht so richtig hinhaut!
Beispiel :
9+1 = 0

Wenn du möchtest kann ich dir meine mal schicken
[BB2D | BB3D | BB+]

BladeRunner

Moderator

BeitragSo, Feb 27, 2005 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
oha, tatsächlich- der Übertrag streikt dann und wann.
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
 

David

BeitragSo, Feb 27, 2005 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Es funktioniert sobald eine der beiden Zeichenketten mehr als ein Zeichen hat. Die Schleife zählt, im Falle von 1. Zeichen in beiden Ketten, von 1 bis 1-1.

09 + 1 funktioniert.

grüße

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Feb 27, 2005 12:15
Antworten mit Zitat
Benutzer-Profile anzeigen
zahl1$="1199112"
zahl2$="3913"
hier passt es auch nicht
[BB2D | BB3D | BB+]

Triton

BeitragSo, Feb 27, 2005 14:10
Antworten mit Zitat
Benutzer-Profile anzeigen
BladeRunner hat Folgendes geschrieben:
Jo Triton.
Solche Fehler sind es die einen zur Verzweiflung treiben können Wink


Harrr, wie dumm user posted image
Danke Smile

Die anderen Fehler schau ich mir nochmal an. Sind ja kleinere Sachen die sich vernutlich schnell beheben lassen.
Coding: silizium-net.de | Portfolio: Triton.ch.vu

Sebastian

BeitragDo, März 03, 2005 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Mal ne saudämliche Frage :

Wozu muss man denn 20-Stellige Zahlen addieren ?!

Laughing
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDo, März 03, 2005 16:25
Antworten mit Zitat
Benutzer-Profile anzeigen
weil BB es nicht selbst kann, bzw. da dann ungenau wird!
normal für Spiele ja kein Problem aber für gewisse Anwendungen unzureichend!
[BB2D | BB3D | BB+]

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group