mikrocontroller.net

Forum: Compiler & IDEs 1<i<5 wie in c umsetzen


Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie schreib ich das in c? eigentlich:


if((i>1) || (i<5))...


stimmt das so?

Autor: Marius Wensing (mw1987)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt fast.

if((i>1) && (i<5))

MfG
Marius

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry vor  1<i<5 es soll true werden wenn die Bedingung nicht stimmt 
also i auserhalb des Bereiches liegt.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco wrote:
> wie schreib ich das in c? eigentlich:
>
>
> if((i>1) || (i<5))...
>
>
> stimmt das so?


||   bedeutet: oder

Jetzt setz einfach mal ein paar Zahlen ein und werte den Ausdruck aus.

zb. für i gleich 0

i > 1      0 ist nicht größer als 1
i < 5      0 ist aber kleiner als 5

Das heist, der Ausdruck ( i > 1  oder  i < 5 ) ergibt wahr, weil
ja oder wiederrum heist, entweder das eine oder das andere muss wahr
sein (oder sogar beides), damit der komplette Ausdruck wahr ist.

Wenn du dir das genau übelegst, dann ist der Ausdruck
i > 1 || i < 5   eigentlich für alle Zahlen wahr, denn irgendeiner
der beiden Teilausdrücke ist immer wahr: Ziemlich viele Zahlen sind
größer als 1 und diejenigen die nicht größer als 1 sind müssen
sicherlich kleiner oder zumindest kleiner als 1 sein. Wenn sie aber
kleiner als 1 sind, dann sind sie sicherlich auch kleiner als 5.
-> Daher: Für jede Zahl gilt: Entweder sie ist größer als 1 oder
aber sie ist kleiner als 5. Manche Zahlen (nämlich 2, 3 und 4) sind
sogar beides: größer als 1 und kleiner als 5.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco wrote:
> sorry vor  1<i<5 es soll true werden wenn die Bedingung nicht stimmt
> also i auserhalb des Bereiches liegt.

Welche Eigenschaften müssen daher diese Zahlen haben?

i muss daher kleiner als 1 sein   oder
i muss größer als 5 sein

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich habe eine zahl i wenn die auserhalb eines bereiches liegt soll 
es die variable x auf 1 setzen. ich dachte mir:


if((i>1) || (i<5)) {
x=1;
}

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco wrote:
> also ich habe eine zahl i wenn die auserhalb eines bereiches liegt soll
> es die variable x auf 1 setzen. ich dachte mir:
>
>
> if((i>1) || (i<5)) {

Nochmal: Probiere es mit Zahlen mal aus.
Nimm an, dass i den Wert 2 habe. Was ergibt dann dein Ausdruck?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>also ich habe eine zahl i wenn die auserhalb eines bereiches liegt soll
>es die variable x auf 1 setzen. ich dachte mir:

>if((i>1) || (i<5)) {
>x=1;
>}

Dann kannst Du gleich
x=1
schreiben

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist:
Natürlich können dir hier 20 Leute die richtige Lösung schreiben.
Aber du lernst mehr, wesentlich mehr, wenn du das selbst ausknobelst.
Jeder, aber wirklich jeder, muss mindestens einmal in die Kombinationen
aus Vergleichen und UND und ODER reinfallen, um das in Zukunft richtig
zu machen.
Es ist wirklich nicht schwer aber man muss es mindestens einmal selbst
gemacht haben.

Autor: winne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>  "1<i<5 "

besagt aber i liege zwischen 1 und 5  also für integer 2;3;4

>>es soll true werden wenn die Bedingung nicht stimmt
>> also i auserhalb des Bereiches liegt.

wäre korrekt so zu formulieren  (1>i) or (5<i)
oder                            not((i<=1)and(I<=5))


daraus ergibt sich in C syntax (1>i)||(5<i)

oder  |((1<=i)&&(5>=i))

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also so richtig blick ich da nicht durch ich möchte das für alle i nicht 
gleich 5,6,7,8,9,10 gilt x=1.

Es müsste doch gehen setze x auf 1, wenn i<5 oder i>10. Das hatt cih 
doch schon im anfangsost. das müsste also doch richtig sein...

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beispiele:

4<5-->1 4>10-->0 = 1 Or 0 = 1-->x=1
11<5-->0 11>10--> = 0 OR 1 = 1-->x=1
7<5-->0 7>10 = 0 OR 0 = 0

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marco wrote:
> also so richtig blick ich da nicht durch ich möchte das für alle i nicht
> gleich 5,6,7,8,9,10 gilt x=1.
>
> Es müsste doch gehen setze x auf 1, wenn i<5 oder i>10. Das hatt cih
> doch schon im anfangsost.

Nein das hattest du nicht. Lies nochmal nach. Von 10 war dort überhaupt
keine Rede sondern von 1

> das müsste also doch richtig sein...

Ist es auch
  if( i < 5 || i > 10 )
    x = 1;
  else
    x = 0;

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.