Test ob Zahl durch 8 teilbar - Modulo?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Test ob Zahl durch 8 teilbar - Modulo?

Beitrag von Delle »

Dachte das geht einfach so, aber anscheinend doch nicht:

Code: Alles auswählen

test = a%8
If test=1
; ja
endif
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Code: Alles auswählen

If (a%8) = 0
; ja
endif
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Ähm ist doch 1, nicht 0... mein obiger Code stimmt, mußte lediglich immer zu a + 1 machen weil mit 0 gestartet...
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

16 durch 8 rest 0. Bei Modulo bekommst du immer den Rest einer Divison :freak:.
Verstehe jetzt nicht genau was du erreichen möchtest.
Bild
Benutzeravatar
Delle
Beiträge: 1130
Registriert: 10.05.2005 22:48

Beitrag von Delle »

Halt nur wissen, ob eine Zahl durch 8 teilbar ist. Was dabei rauskommt, is mir egal :)
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Code: Alles auswählen

isteilbar = (Not 16%8)
If isteilbar
    Debug "Teilbar!"
Else
    Debug "NICHT Teilbar!"
EndIf
Sieht eleganter aus als n a + 1.... also das (Not 16%8)
Bild
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Beitrag von helpy »

NOT geht aber erst ab PB 4.0!

Und hier noch 'ne Möglichkeit ohne die Modulo-Funktion. Geht aber nur, weil der Teiler (8) eine Zweier-Potenz ist!

Hier noch eine Möglichkeit (für PB 3.94):

Code: Alles auswählen

	If (Zahl & $07) = 0
		; Durch 8 Teilbar
	EndIf
Ab PB4.0:

Code: Alles auswählen

	If Not (Zahl & $07)
		; Durch 8 Teilbar
	EndIf
Und eine zweite Möglichkeit mit PB4.0

Code: Alles auswählen

	If (i & $07) XOr $03
		; Durch 8 Teilbar
	EndIf
cu, helpy
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Noch einen:

Code: Alles auswählen

Procedure IsTeilbar(a.l, b.l) ; true wenn b teilt a gilt
    If a % b = 0
        ProcedureReturn #True
    Else
        ProcedureReturn #False
    EndIf
EndProcedure
!UD2
Antworten