www.mikrocontroller.net

Forum: PC-Programmierung [C#] Prüfen ob Integer Zahl a,b,c,d,e ist


Autor: M.Holder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe hier ein Problem.

Ich muss prüfen ob der Integer i einer der Zahlen

7,12,16,18,19,37 und mehr   ist.

Probiert habe ich es hiermit:

if (i == 7 | 12 | 16 ...)
{
...
}

hier kommt aber ein Kompilerfehler


Wie muss diese Prüfung aussehen??


MFG Max

Autor: Chris ... (dechavue)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es viele Zahlen sind, packst du sie am besten in eine Liste/ein 
HashSet und prüfst mit Contains.

HashSet ist hierfür besser geeignet, gibt es allerdings erst ab 3.5 
(oder 3.0?)
            //.Net 3.5:
            HashSet<int> nums = new HashSet<int>() {7,12,16};

            //.Net 2.0:
            //List<int> nums = new List<int>() { 7, 12, 16 };
            if(nums.Contains(i)) { 
                ...
            }

Dein Code sähe richtigermasen so aus, wird aber bei vielen Zahlen 
schnell unübersichtlich:
if (i == 7 || i == 12 || i == 16 ...)
{
...
}


Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wäre in C++ so
switch(i){
   case 5:
   case 7:
   case 16:
      yes();
      break;
   default:
       no();
}

Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in Python wäre das so
if i in [5,7,16]:
    yes()
else:
    no()

nicht umsonst wird python als die einfachste sprache bezeichnet ;)

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in Pascal geht das auch

if i in [5,7,16]

Autor: M.Holder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, die Möglichkeiten hatte ich schon.
Blos mein Problem ist, wenn einer dieser Zahlen i ist, soll nix gemacht 
werden. Wenn alle dieser Zahlen nicht vorkommen, wird eine eine Kette 
von Befehlen durchgeführt.

MFG Max

Autor: Daniel (root) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo ist dann das problem?
for(int i=0; i<N; i++)
   if(!is_i_in(1,2,3,4))
       do_what_you_want();

in python könnte man buildin set Mengen benutzen
lst=[1,2,3,6,7,8,9,0,9]
if not(set([6,7,9]) and set(lst)):
    do_what_you_want()

@Peter
echt geht das in Turbo Pascal?

Sicher geht aber das nicht ;)
if i in [1,2,"hello",3.0]:

die liste ist heterogen

Autor: M.Holder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

if (!is_i_in(7,12,16,18,19);
{
   //nix machen
}
else
{
   Befehl xy;
}

dann gibt bei else den Fehler.

MFG max

Autor: M.Holder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups,

Klammer zu vergessen.
So isses richtig: if (!is_i_in(7,12,16,18,19));

problem besteht weiterhin

MFG Max

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu deinem Fehler fällt mir zwar grad nichts ein, aber kannst du das 
nicht einfach in einer while-Schleife machen? Ist zwar nicht besonders 
effizient "nichts" zu tun, aber würde doch aufs gleiche raus kommen, 
oder?

Ich würd das vielleicht so machen:
if ( (i == 7) || (i == 12) || (i == 16) ...)
{
; //nichts tun
}

else
{
; //etwas tun
}

oder
while( (i == 7) || (i == 12) || (i == 16) ...)
{
; //nichts tun
}

edit
hast du oben beim if nicht nen semikolon zuviel?!

Autor: M.Holder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, so hats geklappt.

Autor: Joachim B. (jojo84)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte, genre :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.