Forum: PC-Programmierung [VB2010] Mehrere Integer auf Gleichheit prüfen


von VblerOdaned (Gast)


Lesenswert?

Hallo Leute,

Ich habe das Problem, das ich mehrere Integerzahlen in VB2010 auf 
Gleichheit prüfen soll.
Das soll doch kein Problem sein.
Aber so funktioniert es nicht:

If not (a=b=c=d) then
  ... 'Nicht gleich
end if

Das kann doch nicht sein.

Hatte schonmal wer so ein Problem?

mfG
VblerOdaned

von Peter II (Gast)


Lesenswert?

VblerOdaned schrieb:
> Das kann doch nicht sein.

weil man mit = nicht vergleicht?

versuch es mal mit:

If not (a==b==c==d) then

von VblerOdaned (Gast)


Lesenswert?

Habe es jetzt so gelöst:

    Function IsEqual(ByVal Int1 As Integer, ByVal Int2 As Integer, ByVal 
Int3 As Integer, ByVal Int4 As Integer) As Boolean
        If Int1 <> Int2 Then
            Return False
            Exit Function
        End If
        If Int1 <> Int3 Then
            Return False
            Exit Function
        End If
        If Int1 <> Int4 Then
            Return False
            Exit Function
        End If
        If Int2 <> Int3 Then
            Return False
            Exit Function
        End If
        If Int2 <> Int4 Then
            Return False
            Exit Function
        End If
        If Int3 <> Int4 Then
            Return False
            Exit Function
        End If
        Return True
    End Function



Aber das muss doch einfacher gehen !!!

von Peter II (Gast)


Lesenswert?

da es vb ist, könnte es auch so gehen

If not (a=b and a = c and a = d) then
  ... 'Nicht gleich

von VblerOdaned (Gast)


Lesenswert?

Und wo wird da c mit d vergleichen?

von Peter II (Gast)


Lesenswert?

VblerOdaned schrieb:
> Und wo wird da c mit d vergleichen?

wozu?

es wird a mit c und a mit d verglichen.

so geht es auch vermutlich

If (a <> b or a <> c or a <> d) then

von Peter II (Gast)


Lesenswert?

VblerOdaned schrieb:
> If not (a=b=c=d) then
>   ... 'Nicht gleich

das dürfte sogar in C falsch sein.

a=b liefert 0 oder 1 zurück
wenn jetzt c dann 0 oder 1 ist, denkst du das sie gleich sind.

von Robert C. (anykey)


Lesenswert?

HI,
Pack deine Interger in einen Liste, in etwa so:
1
Public Class Form1
2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
3
        Dim i As Integer = 10
4
        Dim list As New List(Of Integer)
5
        For j As Integer = 0 To 10
6
            list.Add(i)
7
        Next
8
        If AllEqual(list) Then
9
            MsgBox("Equal")
10
        Else
11
            MsgBox("Not Equal")
12
        End If
13
    End Sub
14
15
    Private Function AllEqual(ByVal x As List(Of Integer)) As Boolean
16
        Dim match As Integer = x(0)
17
        Dim res As List(Of Integer) = x.FindAll(Function(y) y = match)
18
        If res.Count = x.Count Then
19
            Return True
20
        End If
21
        Return False
22
    End Function
23
End Class

Gruß Robert

von Kaj (Gast)


Lesenswert?

Peter II schrieb:
> weil man mit = nicht vergleicht?
>
> versuch es mal mit:
>
> If not (a==b==c==d) then
Wenn man keine Ahnung hat, einfach mal schlau machen oder ruhig sein ;)

https://msdn.microsoft.com/en-us/library/cey92b0t.aspx
https://msdn.microsoft.com/en-us/library/41d8z008.aspx
1
The = Operator (Visual Basic) is also used as an assignment operator.
2
3
...
4
5
The = operator is also used as a comparison operator. For details,
6
see Comparison Operators (Visual Basic).

von Peter II (Gast)


Lesenswert?

Kaj schrieb:
> Wenn man keine Ahnung hat, einfach mal schlau machen oder ruhig sein ;)

aus dem Grund stand ein Fragezeichen da!

Aber selbst dann würde es nicht funktioniere, weil der vergleich Unsinn 
ist.

a = 3
b = 2
c = 0

if ( a = b = c ) ...

-> ( (3 = 2) = 0 ) ...
-> ( ( 0 ) = 0 )
-> true

blöd.

von Yalu X. (yalu) (Moderator)


Lesenswert?

VblerOdaned schrieb:
> If not (a=b=c=d) then

Solche verketteten Vergleiche als Abkürzung für

  a=b and b=c and c=d

werden nur von einigen wenigen Programmiersprachen unterstützt (z.B.
Python, Perl, BCPL und Mathematica). Visual Basic gehört nicht dazu.

von Oliver S. (oliverso)


Lesenswert?

VblerOdaned schrieb:
> Das kann doch nicht sein.

Ums kurz zu machen: Doch, kann es.

Auch wenn du das nicht gerne hörst : RTFM
In dem Fall ein Einführungsbuch/Tutorial zu (Visual) Basic.

Ohne die einfachsten Grundlagen einer Programmiersprache zu kennen, kann 
man nicht programmieren. Und zum Visual Basic gibt's ja nun wirklich 
ausreichend viel Lesestoff im Netz.

Oliver

von Reinhard M. (Gast)


Lesenswert?

Falls mal die == Taste nicht funktioniert ;-)
1
//return -1 if equal
2
int vergleich(int a, int b, int c, int d)
3
{
4
    return (a & b & c & d) | (~a & ~b & ~c & ~d);
5
}

von Meister E. (edson)


Lesenswert?

Peter II schrieb:
> VblerOdaned schrieb:
>> If not (a=b=c=d) then
>>   ... 'Nicht gleich
>
> das dürfte sogar in C falsch sein.

Ganz sicher sogar, oder würdest Du not_ oder _then zu den 
C-Schlüsselwörtern zählen ;)

Vergleich mit einem '=' gibt es in C nicht, da ist das eine Zuweisung.

> a=b liefert 0 oder 1 zurück
> wenn jetzt c dann 0 oder 1 ist, denkst du das sie gleich sind.

von Rolf M. (rmagnus)


Lesenswert?

Meister E. schrieb:
>> das dürfte sogar in C falsch sein.
>
> Ganz sicher sogar, oder würdest Du not oder then zu den
> C-Schlüsselwörtern zählen ;)

In C++ ist not tatsächlich ein Schlüsselwort. In C kann man es per
#include <iso646.h> nachrüsten.

von Meister E. (edson)


Lesenswert?

Rolf M. schrieb:
> Meister E. schrieb:
>>> das dürfte sogar in C falsch sein.
>>
>> Ganz sicher sogar, oder würdest Du not oder then zu den
>> C-Schlüsselwörtern zählen ;)
>
> In C++ ist not tatsächlich ein Schlüsselwort. In C kann man es per
> #include <iso646.h> nachrüsten.

Das stimmt so, danke für die Info. Trotzdem C != C++

SCNR

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.