Variablenwert an Ausdruck hängen?!



  • Hallo,

    ich bin wirklich wirklich wirklich neu in Sachen C... habe, um genau zu sein, heute den ersten Code geschrieben...

    Folgendes Problem: Ich würde gerne in einer Zählschleife eine Variable hoch zählen und in der Schleife den Wert an einen Ausdruck hängen....

    also z.B.

    for (I = 1; I == 10; I++){
      Ausgang+I = Wert;
    }
    

    kann ich dieses '+I' irgendwie in C realisieren?

    ich frage hier danach, da ich nicht weiß, wonach ich in der Fachlitteratur oder im Internet suchen soll...

    Bitte helft mir...



  • Meinst du sowas?

    int ergebnis = 0;
    for( int i = 0; i < 10; ++i )
    {
    ergebnis += i;
    }
    

    Was für eine Bedingung für die Schleife wolltest du denn?
    Denn ich glaube nicht dass du mit i == 10 das bezweckst was du willst;-)

    Lg freeG


  • Mod

    Ich rate auch mal: Meinst du so etwas?

    int Ausgang[10]; // Macht 10 ints namens Ausgang[0] bis Ausgang[9]
    int I;
    for (I = 0; I != 10; I++){
      Ausgang[I] = Wert;
    }
    // Und jetzt haben Ausgang[0] bis Ausgang[9] alle den Wert Wert
    

    Stichwort hierfür wäre: Array



  • ach so... ja, das '==' war ein Tippfehler... es sollte '>=' heißen...

    aber dennoch ist es nicht die Lösung....

    Also folgendes: Das Programm soll für nen Mikrocontroller sein...
    und es folgt ein die Schleife, die ich meinte...

    NR=0;
    for (I = 0; I >= 79; I++){				
         if (Wert[I].ROT == 1)				
    	PORTB |= (1<<PB+NR);
         else
    	PORTB &= ~(1<<PB+NR);
         NR++;
         if (Wert[I].GRUEN ==1)			
    	PORTB |= (1<<PB+NR);
         else
    	PORTB &= ~(1<<PB+NR);
    }
    

    ...
    es soll also geprüft werden, ob Wert[i].Rot = 1 ist... wenn dem so ist, dann soll am 1. Pin des B-Portes (Also praktisch (1<<PB0) eine 1 angelegt werden und wenn dem nicht so ist, eine logische 0. Das gleiche bei Wert[i].Grün... nur da soll es der 2. Pin des B-Portes sein... also (1<<PB1) usw...

    also ich habe mich ein bisschen falsch ausgedrückt... 🙄



  • Es soll also aus PB+NR PB0, PB1, PB2 usw. entstehen... geht dies?



  • gruenemoehre schrieb:

    ach so... ja, das '==' war ein Tippfehler... es sollte '>=' heißen...

    aber dennoch ist es nicht die Lösung....

    Also folgendes: Das Programm soll für nen Mikrocontroller sein...
    und es folgt ein die Schleife, die ich meinte...

    NR=0;
    for (I = 0; I >= 79; I++){				
         if (Wert[I].ROT == 1)				
    	PORTB |= (1<<PB+NR);
         else
    	PORTB &= ~(1<<PB+NR);
         NR++;
         if (Wert[I].GRUEN ==1)			
    	PORTB |= (1<<PB+NR);
         else
    	PORTB &= ~(1<<PB+NR);
    }
    

    ...
    es soll also geprüft werden, ob Wert[i].Rot = 1 ist... wenn dem so ist, dann soll am 1. Pin des B-Portes (Also praktisch (1<<PB0) eine 1 angelegt werden und wenn dem nicht so ist, eine logische 0. Das gleiche bei Wert[i].Grün... nur da soll es der 2. Pin des B-Portes sein... also (1<<PB1) usw...

    also ich habe mich ein bisschen falsch ausgedrückt... 🙄

    Dein Codeschnipsel hat irgendwie wenig damit zu tun, was Du so erzählst. Außerdem stimmt Deine Schleife schon mal überhaupt nicht, denn sie tut nichts.

    for (I = 0; I < 79; I++)
    

    Ist wohl eher das was Du meinst.

    Wenn Du das erste Bit einer Variable setzen willst, nimm

    var |= 1;
    

    Zum Löschen

    var &= ~1;
    

    Für das zweite Bit:

    var |= 2;
    

    Zum Löschen

    var &= ~2;
    

    Für das dritte Bit:

    var |= 4;
    

    Zum Löschen

    var &= ~4;
    

    u.s.w.

    mfg Martin


Anmelden zum Antworten