Hallo, habe eine Software für einen Kabeltestet entwickelt. Soweit funktioniert diese auch. Aber nur wenn man eine 1 zu 1 Verbindung hat. Wenn man jezt Leitungen testen möchte die gewollt verdreht sind. Wie kann ich ihm sagen das er in der For-Schleife nicht von 1 bis 9 hoch zählen soll sondern z.b. erst 2 dann 5 dann 8 usw. Schöne Grüße Christoph
uint_8 x[] = {5,2,7,3,9,7,1,4}; for( uint_8 i = 0; i < sizeof(x) ++i ) { print("%d\n", x[i] ); } aber ob die das was weiterhilft weiss ich nicht, du hast ja nicht mal die Programmiersprache verraten.
Verpacke die zu verwendenden Werte in einem Array und schiebe den Index linear weiter. Gruss Robert
Ganz einfach,
1 | for i in 2 5 8 |
...wenn deine Programmiersprache diese Art der for-Schleife unterstützt. Du hast ja nicht verraten, welche Sprache du gerade verwendest. Ansonsten heisst das Zauberword Array. Oliver
Ah sorry. ^^ Natürlich C. Ich programmiere im AVR Studio 4. AVR GCC. Controller ist ein AT90CAN128. Also vorher in einer Variablen die Werte hineinschreiben und in der Bedinung wieder aufrufen.
Ok vielen Dank schonmal. Habe ein Script über Arrays gefunden. Ich denke damit werde ich es hinbekommen.
Ich bin jetzt folgendermaßen vorgegangen: ... int x[9]={9,2,3,4,5,6,7,8,1}; int i; ... for(i=0; i<10; ++i){long_delay(5); i[z]; PORTC=i} Er zählt von 1 bis 9 hoch. Bleibt bei 9 stehen. Wenn ich in die Klammer "i<sizeof(x)" schreibe zählt er bis 15.
Christoph R. schrieb: > Ich bin jetzt folgendermaßen vorgegangen: > > ... > int x[9]={9,2,3,4,5,6,7,8,1}; > int i; > ... > for(i=0; i<10; ++i){long_delay(5); i[z]; PORTC=i} Welche Werte nimmt denn i an? 0 1 2 3 4 5 6 7 8 9 Zähl nach. Das sind 10 Werte, nicht 9 Dein Array hat aber nur 9 Elemente! Merkregel Bei einer Arraydefinition gibt man die Anzahl der Elemente an. Der höchste zulässige Index ist immer um 1 kleiner als diese Zahl Ein Array int x[9] besteht aus x[0] x[1] x[2] x[3] x[4] x[5] x[6] x[7] x[8] zähl wieder nach. Das sind 9 Array-Elemente wie von der Definition gefordert. Beachte auch: Das letzte Array Element hat den Index 8! > > Er zählt von 1 bis 9 hoch. Bleibt bei 9 stehen. Wenn ich in die Klammer > "i<sizeof(x)" schreibe zählt er bis 15. kein Wunder. sizeof liefert die Größe in Bytes und nicht in int Einheiten die Anzahl der Elemente in einem Array kann man so bestimmen sizeof(x)/sizeof(x[0]) also: Gesamtgröße in Bytes / Größe eines Elementes in Bytes
> Habe ein Script über Arrays gefunden
Besser wäre es, wenn du dir ein richtiges C-Buch kaufst und
durcharbeitest.
Christoph R. schrieb: > Wie kann ich ihm > sagen das er in der For-Schleife nicht von 1 bis 9 hoch zählen soll > sondern z.b. erst 2 dann 5 dann 8 usw. > > Schöne Grüße > > Christoph Ganz einfach: for(i=2 ; i<ENDE ; i+=3) {} > int x[9]={9,2,3,4,5,6,7,8,1}; > int i; > ... > for(i=0; i<10; ++i){long_delay(5); i[z]; PORTC=i} Der Code macht nicht nur keinen Sinn, er ist auch noch ziemlich bescheuert.
Ja so zählt er immer um 3 hoch. Er soll aber flexibel sein. So dass ich ihm vorher sage zähle so und so hoch. Die For Schleifen sollen unverändert bleiben.
Frank Bär schrieb: >> for(i=0; i<10; ++i){long_delay(5); i[z]; PORTC=i} > > Der Code macht nicht nur keinen Sinn, er ist auch noch ziemlich > bescheuert. ja das i[z]; sieht schon ein wenig merkwürdig aus.
Habe da nur etwas rumgespielt. Es funktioniert ja auch nicht. Deswegen schreibe ich ja hier. ^^
Christoph R. schrieb: > Ja so zählt er immer um 3 hoch. Er soll aber flexibel sein. So dass ich > ihm vorher sage zähle so und so hoch. Die For Schleifen sollen > unverändert bleiben. Er macht genau das, was dein Minimalbeispiel verlangte.
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.