Hallo, ich steh irgendwie auf dem Schlau. Ich habe folgendes Problem: In einer Funktion habe ich die Variable "Zahl" vom Typ int. Ist "Zahl" zwischen 4 und 8, so soll der Return-Wert zuerst 0 sein und beim nächsten Funktionsaufruf dann 1. Für alle anderen Werte soll der Return-Wert gleich 1 sein. Wie löse ich das? Vielen Dank!
int Fernsterkomparator(int Zahl) { if((Zahl>3)&&(Zahl<9)) return 0; return 1; } mfG ingo
Hallo Ingo, danke für deinen Versuch, aber beim 2. Aufruf der Funktion soll bei einer Zahl zwischen 4 und 8 ja dann auch 1 zurückgegeben werden. Gruß, Frank
dann so: int Fernsterkomparator(int Zahl) { static int Versuch=0; if(!Versuch) { Versuch=1; return 1; } if((Zahl>3)&&(Zahl<9)) return 0; return 1; } mfG ingo
Ich glaube er meint soetwas:
1 | int Fernsterkomparator(int Zahl) |
2 | {
|
3 | static int Versuch=0; |
4 | if((Zahl>3)&&(Zahl<9)) |
5 | {
|
6 | if(!Versuch) |
7 | {
|
8 | Versuch=1; |
9 | return 0; |
10 | }
|
11 | else
|
12 | return 1; |
13 | }
|
14 | Versuch=0; |
15 | return 1; |
16 | }
|
und dann, wenn die Zielplattform ein avr sein soll, doch bitte "Versuch" nicht als "int" sondern "uint8_t"
Manne schrieb: > Warum? Wozu den µC in 16-Bit Verarbeitung reintreiben, wenn es 8 Bit auch tun. Im Grunde würde sogar ein einzelnes Bit genügen, aber das gibt es in C nun mal nicht.
Ich hätte auch noch eins:
1 | int Fernsterkomparator(int Zahl) |
2 | { |
3 | static int Versuch=0; |
4 | |
5 | if(Versuch) return 1; |
6 | |
7 | if((Zahl > 3) && (Zahl < 9)) Versuch = 1; |
8 | |
9 | return (1-Versuch); |
10 | } |
Detlev T. schrieb: > Ich hätte auch noch eins: Geht aber nicht. Wenn Versuch das erste mal 1 geworden ist, returnierst du immer eine 1. Selbst dann wenn der zu überwachende Bereich verlassen und erneut betreten wird
@kbuchegg Stimmt, ich hatte mich verlesen. Ich hatte gedacht "bei de*n* nächsten" statt "bei de*m* nächsten". (Du bist aber auch kleinlich ;) )
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.