Probem in einer for-Schleife

Gast #1142436
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?
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
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
> 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
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.