Hallo, ich habe folgende Funktion definiert. void Testsfunktion(void) { uint8_t Temp[5]; uint8_t Var; for(int i=0;i<5;i++){ if(Var==(Temp[i])){ Richtig(); } else Fehler(); } } Die Funktion Fehler ist jedesmal aufgerufen, wenn beim Durchlauf die Ungleichheit getroffen ist. Aber ich möchte diese Funktion nur einmal aufrufen, wenn nach dem Durchlauf von i=0 bis 4 die Gleiheit nicht getroffen wird. Bitte kann jemanden mir helfen?
1 | else
|
2 | Fehler(); |
ändern in
1 | else { |
2 | Fehler(); |
3 | break; |
4 | }
|
Und bist du dir sicher, dass du die Funktion Richtig 5 mal aufgerufen haben möchtest?
eine andere Möglichkeit
1 | void Testsfunktion(void) |
2 | {
|
3 | uint8_t Temp[5]; |
4 | uint8_t Var; |
5 | |
6 | int i; |
7 | for( i = 0; i < 5 && Var == Temp[i]; i++ ) |
8 | Richtig(); |
9 | |
10 | if( i != 5 ) |
11 | Fehler(); |
12 | }
|
Stefan Ernst wrote:
> Übrigens: wie bekommen denn Var und Temp ihre Werte?
Die Frage ist denk ich aus dem Zusammenhang gerissen worden, zwischen
den Variablen Definitionen und der Auswertung dürfte Code fehlen.
Wahrscheinlich sowas wie eine Fragebogenauswertung, bei der nach der
ersten falschen Antwort schon abgebrochen wird.
Hallo, ich habe korrigiert aber es klappt nicht wie ich mir wünscht,vielleicht habe ich mich falsch ausgedrückt. Mit dem ersten Programm ist die Funktion Fehler jedesmal aufgerufen, wenn die ungleichheit gefunden wird. Beispiel 1: Var= 0X02; Temp[0]= 0x01; Temp[1]= 0X02; Temp[2]= 0X03; Temp[3]= 0x04; Temp[4]= 0x05; Die Funktion Fehler ist 4 mal aufgerufen Beispiel 2: Var=0x06; Temp[0]= 0x01; Temp[1]= 0X02; Temp[2]= 0X03; Temp[3]= 0x04; Temp[4]= 0x05; Die Funktion Fehler ist 6 mal aufgerufen. Ich möchte, dass die Funktion nur einmal aufgerufen, wenn beim Durchlauf gar keine Gleichheit getroffen ist.Und nicht wenn jedesmal die Ungleicheit getroffen ist. danke
dann nimm doch die Funktion von Karlheinz, da wird fehler() nur einmal aufgerufen
> ich habe korrigiert aber es klappt nicht wie ich mir wünscht,vielleicht > habe ich mich falsch ausgedrückt. Dann zeig doch bitte mal, was du jetzt hast. Soll ja schon vorgekommen sein, dass jemand bei einer Korrektur selbst wieder einen Fehler eingebaut hat. So Top Secret wird dein Programm ja wohl nicht sein.
Du willst also Pruefen, ob sie alle False (Ungleich) sind? void Testsfunktion(void) { uint8_t Temp[5]; uint8_t Var; uint8_t alleUngleich = 1; for(int i=0;i<5;i++){ if(Var==(Temp[i])){ alleUngleich = 0; } } if (alleUngleich) Falsch(); }
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.