Fehler im Programmtest finden

Im unterstehenden Programmtext sollen mindestens 6 Fehler sein (Syntax- und logische fehler). Könnt ihr mir sagen was falsch ist, am besten mit korrektur.

gruß

Option Explicit

Sub test []

Dim a As Integer
dim i as integer
dim z1 as integer
dim z2 as integer
dim e as char

Inputbox(„Bitte eine ganze Zahl eingeben!“)

e = ja / Standardantwort ist: ja

For i = 2 to sqr(a+1)
z1 = int(a / i) * i
z2 = a - z1
if z2 = 0 then
e = „nein“
next i

MsgBox "Die Antwort ist " + e, , „Ergebnis“

End Funtion

Hallo,

interessant wäre es, wenn Du uns verraten würdest, von welcher Programmiersprache Du redest. Viel erinnert an VB oder VBS, aber nicht alles. In VB6 ist der folgende Code korrekt, auch wenn mir völlig unklar ist, was er tun soll.

Option Explicit

Dim a As Integer
Dim i As Integer
Dim z1 As Integer
Dim z2 As Integer
Dim e As String

Private Sub tt()

a = InputBox("Bitte eine ganze Zahl eingeben!")

For i = 2 To Sqr(a + 1)
 z1 = Int(a / i) \* i
 z2 = a - z1
 If z2 = 0 Then
 e = "nein"
 Else
 e = "ja"
 End If
Next

MsgBox "Die Antwort ist " + e, , "Ergebnis"

End Sub

Was sachlich falsch war und was nur nicht zur Programmiersprache gepasst hat, kann ich nicht sagen, ich weiß nicht, um welche Sprache es geht und ob ich die beherrsche, deshalb kann ich die Korrekturen nicht kommentieren. Das geht beim Datentyp Char los, in VB/VBA/VBS heißt der String. Fehler oder nur falsches Brett?

Gruß Rainer

Hallo,

interessant wäre es, wenn Du uns verraten würdest, von welcher
Programmiersprache Du redest. Viel erinnert an VB oder VBS,
aber nicht alles. In VB6 ist der folgende Code korrekt, auch
wenn mir völlig unklar ist, was er tun soll.

hmm, das ist eine Aufgabe aus ner Bauinformatik Klausur. Normales Excel VBA. Hoffe mal ds hilft weiter

Hallo,

hmm, das ist eine Aufgabe aus ner Bauinformatik Klausur.
Normales Excel VBA. Hoffe mal ds hilft weiter

ja, hilft. Dann ist mein Code OK.

Hast Du denn Excel? Dann kannst Du den fehlerhaften Code doch einfach einfügen und der Debugger zeigt Dir die Fehler.

OK, dann nehmen wir uns den Code mal vor.

_______________________________

Option Explicit

Sub test []

die Eckigen Klammern gehören nicht zu VBA. Richtig:

Sub test ()

Dim a As Integer
dim i as integer
dim z1 as integer
dim z2 as integer
dim e as char

Dim e As char ist falsch, das muss für VBA As String heißen,
Char ist Java oder C … Richtig:

Dim e As String

Inputbox(„Bitte eine ganze Zahl eingeben!“)

e = ja / Standardantwort ist: ja

Slash als Kommentarzeichen ist ebenfalls nicht VBA. Anführungszeichen fehlen um das ‚ja‘, aber die Zeile macht keinen Sinn, kann wegfallen, das macht der ‚Else‘-Zweig.

For i = 2 to sqr(a+1)
z1 = int(a / i) * i
z2 = a - z1
if z2 = 0 then
e = „nein“

End If fehlt, hier gehört auch ein ‚Else‘ hin …

Else
e = „ja“
End If

next i

Das ‚i‘ kann man weg lassen, muss aber nicht. Das ist kein Fehler,
nur überflüssig.

MsgBox "Die Antwort ist " + e, , „Ergebnis“

End Funtion

Falsch, oben steht Sub … Dann muss hier End Sub stehen, in Function ist auch noch ein Tippfehler.

End Sub

Wozu die Schleife gut sein soll ist mir unklar, aber danach war nicht gefragt.

OK?

Gruß Rainer

Hi,

oben im Code hatte ich noch eine Korrektur, die ich eben wieder übersehen habe:

Inputbox(„Bitte eine ganze Zahl eingeben!“)

Da soll natürlich stehen:

a = Inputbox(„Bitte eine ganze Zahl eingeben!“)

Gruß Rainer

Hallo Rainer,

e = ja / Standardantwort ist: ja

Slash als Kommentarzeichen ist ebenfalls nicht VBA.

Richtig.

aber die Zeile macht keinen Sinn, kann wegfallen, das macht der ‚Else‘-Zweig.

Else
e = „ja“
End If

Leider falsch:smile: Du hast die (was auch immer für eine) Programmablauflogik „verbogen“

Dein e ist jetzt abhängig vom letzten Durchgang in der For-Schleife, dementsprechend ist es dann vielleicht „ja“.
Aber e sollte „nein“ sein wenn auch nur durch einen i-Wert die Bedungung erfüllt ist.

Naja, je nachdem wie kritisch der Lehrer dein „+“ als Stringverbinder in der Msgbox-Zeile sieht, hättest du dafür dann doch insgesamt eine 2 oder 3 bekommen :smile:)

Sub Test()
Dim a As Integer
Dim i As Integer
Dim z1 As Integer
Dim z2 As Integer
Dim e As String
a = InputBox("Bitte eine ganze Zahl eingeben!")
e = "ja" ' Standardantwort ist: ja
For i = 2 To Sqr(a + 1)
 z1 = Int(a / i) \* i
 z2 = a - z1
 If z2 = 0 Then
 e = "nein"
 End If
Next i
MsgBox "Die Antwort ist " & e, , "Ergebnis"
End Sub

Gruß
Reinhard

1 Like

Hallo Reinhard,

Leider falsch:smile: Du hast die (was auch immer für eine)
Programmablauflogik „verbogen“

stimmt. :frowning: Danke für die Korrektur.

So etwas passiert, wenn man die Programmablauflogik nicht verstanden hat.

Gruß Rainer

Hallo Rainer,

In VB6 ist der folgende Code korrekt, auch
wenn mir völlig unklar ist, was er tun soll.

Hab den Code etwas umgeschrieben und optimiert,
jetzt sollte ersichtlicher sein, was er macht :wink:
Ja, mir ist langweilig…

(hab zuerst eine Version geschrieben, die etwas
„zu“ optimiert war lol)

Dim Zahl, i As Integer
Dim Prim As Boolean

Zahl = InputBox("Bitte eine ganze Zahl eingeben!")

Prim = True
For i = 2 To Int(Sqr(Zahl))
 If (Zahl Mod i = 0) Then
 Prim = False
 Exit For
 End If
Next i

MsgBox "Die Zahl ist " & IIf(Prim, "", "k") & "eine Primzahl."

[MOD] Pre-Tag eingefügt.

Hi Alex,

ja, jetzt ist es klar, den Code kenne ich. :smile:

Gruß Rainer