Probem in einer for-Schleife

Gast #1142436
Lesenswert?

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?
#1142466
Lesenswert?

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.
Gast #1143029
Lesenswert?

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
#1143080
Lesenswert?

> 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.
Gast #1143101
Lesenswert?

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();
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren