Hilfe bei einer Aufgabe

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

BlackStarFire7

Betreff: Hilfe bei einer Aufgabe

BeitragSo, Mai 07, 2023 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich versuche eine Function zu erstellen, die in einem eigegebenen Text die @ Zeichen zählt.
Kann mir jemand weiterhelfen, ich bekomme es nicht zum laufen.
Schon mal vielen Dank.

Code: [AUSKLAPPEN]


email$ = Input()
Global atcounter%

Function atanalyse()

 Local laenge%
 Local zeichen$

laenge% = Len(email$)
 Return laenge%

   For i% = 1 To laenge%

       zeichen$ = Mid(email$, i%, 1)
       Return zeichen$

   If (zeichen$ = "@") Then
  atcounter% = atcounter% + 1
  Return atcounter%
 EndIf
Next
Return atcounter%
End Function

Print email$
Print atcounter%

 

konstantin

BeitragSo, Mai 07, 2023 22:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Welche Sprache soll das denn sein? Smile
 

konstantin

BeitragSo, Mai 07, 2023 22:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]


mail$ = Input$("EMail: ")
print "Anzahl der @-Zeichen: " + atanalyse(mail$)

Function atanalyse(m$)
Local atcounter% = 0
Local zeichen$
Local laenge% = Len%(m$)
Local i%
For i% = 1 to laenge%
zeichen$ = Mid(m$, i%, 1)
if zeichen$ = "@" then atcounter% = atcounter% + 1
Next
return atcounter%
End Function



Ich glaube so, oder? (ungetestet)

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Mai 07, 2023 22:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
sehe da mehrer Fehler.

Die Functtion wird garnicht aufgerufen!
Email$ wird der Function nicht übergeben!

"Return" sind falsch gesetzt!
Return atcounter% überflüssig da es Global ist
ab " Return laenge%" wird der nachfolgende Code nie abgearbeitet

Return in der Schleife bricht diese ab und weitere Buchstaben werden nicht überprüft

Code: [AUSKLAPPEN]
email$ = Input()
Global atcounter%

atanalyse(email$)


Function atanalyse(email$)

 Local laenge%
 Local zeichen$

 laenge% = Len(email$)
 ;Return laenge%

 For i% = 1 To laenge%

    zeichen$ = Mid(email$, i%, 1)
  ;  Return zeichen$
 
   If (zeichen$ = "@") Then

  atcounter% = atcounter% + 1
  ;Return atcounter%
 EndIf
Next
;Return atcounter%

End Function

Print email$
Print atcounter%

WaitKey()
[BB2D | BB3D | BB+]

Midimaster

BeitragMo, Mai 08, 2023 9:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde Dir dringend raten eines der Anfänger-Tutorials hier im Forum durchzuarbeiten.

Speziell diese beiden

Variablen Global oder Local? Lies Lektionen I bis IV:
https://www.blitzforum.de/foru...hp?t=33456

Funktionen? Lies Lektionen I bis IV:
https://www.blitzforum.de/foru...hp?t=33468


Wenn eine Funktion etwas zurückgeben soll, dann musst du sie im Hauptprogramm (Dein oberer Teil) auch aufrufen (hinschreiben) und das Ergebnis einer Variablen zuweisen:

BlitzBasic: [AUSKLAPPEN]
AtCounter = AtAnalyse(Email)


pro Funktion ist meistens nur ein RETURN sinnvoll. Damit wird das End-Resultat an das Hauptprogramm zurückgegeben. Jedes weitere RETURN wird dazu führen, dass die Funktion abrupt abgebrochen wird.
BlitzBasic: [AUSKLAPPEN]
Function AtAnalyse%(...)
;... alles berechnen und am schluss
Return count
End Function


Variablennamen innerhalb der Funktion sind local, dürfen also anders heißen, auch wenn sie die Inhalte von Variablen des Hauptprogramms bearbeiten. Hier z.b. PruefText statt Email
BlitzBasic: [AUSKLAPPEN]
Function Atanalyse%(PruefText$)



Hier mal beide Varianten

für BlitzBasic
BlitzBasic: [AUSKLAPPEN]
Global Email$
Global AtCounter%

Email = Input()
AtCounter = AtAnalyse(Email)


Print " Die Adresse <" + Email + "> enthält " + AtCounter + " @-Zeichen"
WaitKey()
End

Function Atanalyse%(PruefText$)
Local count%

For i% = 1 To Len(PruefText)
Local zeichen$ = Mid( PruefText,i, 1)
If (zeichen="@") Then
count =count +1
EndIf
Next
Return count
End Function



und hier für BlitzMax:
BlitzMax: [AUSKLAPPEN]
SuperStrict
Global Email:String
Global AtCounter:Int

Email = Input()
AtCounter = AtAnalyse(Email)

Print " Die Adresse <" + Email + "> enthält " + AtCounter + " @-Zeichen"
'WaitKey()

Function AtAnalyse:Int(PruefText:String)
Local count:Int
For Local i:Int = 1 To Len(PruefText)
Local zeichen:String = Mid( PruefText,i, 1)
If (zeichen="@") Then
count =count +1
EndIf
Next
Return count
End Function
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

tft

BeitragDo, Mai 11, 2023 10:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Midimaster

Lange nicht gehört und gesehen. Ich meine damit mich Smile
Toll das hier noch etwas geht.

Gruss aus dem schönen Antalya TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group