Archiv verlassen und diese Seite im Standarddesign anzeigen : verschachtelte schleifen
sind verschachtelte schleifen nicht möglich? oder habe ich irgentwas falsch gemacht?
#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;
}
}
}
}
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
Es sollte außerdem if (RWD==0) anstatt if (RWD=0) heißen. das Gleichheitszeichen ist in C der Zuweisungsoperator.
MfG Mark
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
damaltor
31.10.2007, 14:10
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.
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 :)
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
#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...
In der Asuro.c und h ist aber RWD schon als define bestimmt.
mfg liggi
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.
#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);}
}
Deine while-Schleife wird nur einmal durchlaufen, weil am Ende des Blocks ein return 0 steht. Ändere das.
MfG Mark
ok, gemacht. jetzt geht beim kollidieren das licht aus, aber bei weiteren zusammenstößen nicht jedesmal wieder an
damaltor
31.10.2007, 17:58
das ist der große unterschied: eine VARIABLE kann jederzeit verändert werden.
ein DEFINE jedoch wird -wie der name sagt- definiert. er lässt sich nie wieder ändern.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.