-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: verschachtelte schleifen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77

    verschachtelte schleifen

    Anzeige

    sind verschachtelte schleifen nicht möglich? oder habe ich irgentwas falsch gemacht?

    Code:
    #include "asuro.h"
    
    
    int main(void) {
    
    int RWD=0;
    int a=1;
    Init();
    while(a=1) {
    
      if (RWD=0) {
      
      while (PollSwitch()==0) {
        BackLED(OFF,OFF);
        MotorDir(FWD,FWD);
        MotorSpeed(120,120);
    	}	
      while (PollSwitch()>0){
        BackLED(ON,ON);
        RWD=1;
    	}
    }
    
     else if (RWD=1) {
      
      while (PollSwitch()==0) {
        BackLED(ON,ON);
        MotorDir(RWD,RWD);
        MotorSpeed(120,120);
    	}	
      while (PollSwitch()>0){
        BackLED(OFF,OFF);
        RWD=0;
    	}
    }
    }
    }

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    23.08.2007
    Beiträge
    61
    Möglicherweise liegt es daran, dass du in der 8. Zeile while(a=1) geschrieben hast. Es muss aber while(a==1) heißen.
    Grundsätzlich sind verschachtelte Schleifen kein Problem.

    Gruß farratt

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    25.03.2006
    Ort
    Darmstadt
    Alter
    26
    Beiträge
    522
    Es sollte außerdem if (RWD==0) anstatt if (RWD=0) heißen. das Gleichheitszeichen ist in C der Zuweisungsoperator.

    MfG Mark

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77
    ahh, klar! bin noch ein bischen an Delphi gewöhnt!

    Trotzdem gibt es im Programmers Notepad noch folgende Fehler, die ich nicht ganz verstehe:

    test.c: In function `main':
    test.c:6: error: parse error before numeric constant
    test.c:20: error: invalid lvalue in assignment
    test.c:33: warning: statement with no effect

  5. #5
    Moderator Robotik Einstein Avatar von damaltor
    Registriert seit
    28.09.2006
    Ort
    Jena
    Alter
    31
    Beiträge
    3.912
    RWD ist ein bereits definerter wert, du kannst ihn nicht als variable verwenden. die zeile 6 entspeicht etwa "int 1=2", du kannst aber keiner zahl eine zahl zuweisen. benenne die variable um.

    gleiches gilt in den beiden anderen zeilen.
    kleinschreibung ist cool!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77
    warum geht das nicht? ich kenne es aus anderen programmiersprachen so, das man einer Integer-variablen beim deklariren einen wert zuweißt und diesen dann später überschreibt.

    int i=0; //i hat wert 0
    i=2; // jetzt hat i den wert 2

    warum kann ich RWD nicht als Variable verwenden? Es ist doch eine, solange ich sie anfangs als int deklariere und nicht als #define...

    fehler in c:33 behiben, ein gleichheitszeichen zuviel

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    24.09.2006
    Beiträge
    84
    Aber RWD wurde bereits irgendwo anders deklariert bzw. hier besser gesagt mit #define RWD blabla eine Konstante erzeugt. Du kannst also in deinem Programm kein Integer mehr deklarieren, der RWD heißt. Benenne die Variable also einfach um und du wirst kein Problem mehr haben. Dein restliches Programm hab ich mir jetzt nicht angeschaut, wenn es immer noch nicht klappen sollte, stelle bitte nochmal das bis dahin berichtigte Programm online.

    Viele Grüße
    CsT

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77
    Code:
    #include "asuro.h" 
    
    
    int main(void) { 
    
    int RWD=0; 
    int a=1; 
    Init(); 
    while(a==1) { 
    
      if (RWD==0) { 
      
      while (PollSwitch()==0) { 
        BackLED(OFF,OFF); 
        MotorDir(FWD,FWD); 
        MotorSpeed(120,120); 
       }    
      while (PollSwitch()>0){ 
        BackLED(ON,ON); 
        RWD=1; 
    } 
    } 
    
     else if (RWD==1) { 
      
      while (PollSwitch()==0) { 
        BackLED(ON,ON); 
        MotorDir(RWD,RWD); 
        MotorSpeed(120,120); 
       }    
      while (PollSwitch()>0){ 
        BackLED(OFF,OFF); 
        RWD=0; 
       } 
    } 
    return(0);} 
    
    }
    #

    kein define...

  9. #9
    Benutzer Stammmitglied
    Registriert seit
    12.09.2007
    Alter
    23
    Beiträge
    98
    In der Asuro.c und h ist aber RWD schon als define bestimmt.

    mfg liggi
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    30.10.2007
    Ort
    Meensen
    Alter
    28
    Beiträge
    77
    ahhhh, jezt verstehe ich! Danke!

    so, programm geflasht. leider passiert beim drücken der tasten nichts.
    ich hoffe das wird im passenden thema noch geklärt.

    Code:
    #include "asuro.h" 
    
    
    int main(void) { 
    
    int RW=0; 
    int a=1; 
    Init(); 
    while(a==1) { 
    
      if (RW==0) { 
      
      while (PollSwitch()==0) { 
        BackLED(OFF,OFF); 
        MotorDir(FWD,FWD); 
        MotorSpeed(120,120); 
       }    
      while (PollSwitch()>0){ 
        BackLED(ON,ON); 
        RW=1; 
    } 
    } 
    
     else if (RW==1) { 
      
      while (PollSwitch()==0) { 
        BackLED(ON,ON); 
        MotorDir(RWD,RWD); 
        MotorSpeed(120,120); 
       }    
      while (PollSwitch()>0){ 
        BackLED(OFF,OFF); 
        RW=0; 
       } 
    } 
    return(0);} 
    
    }

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •