Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Ubacivanje varijable u naredbu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Ubacivanje varijable u naredbu

[ Pregleda: 1209 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

wiktor91
Varazdin, Hrvatska

Član broj: 171052
Poruke: 116
*.adsl.net.t-com.hr.



Profil

icon Ubacivanje varijable u naredbu12.01.2010. u 22:35 - pre 142 meseci
Ovako, zanima me da li postoji mogučnost da se u C-u nekako napravi sljedeće.

Znači imam beskonačnu while petlju, u njoj for petlju koja ide od 1 do 7 a može iči u nekom slučaju i puno dalje, sa korakom od 1.
U toj for petlji je neka naredba recimo konkretno u mojem slučaju PORTB.Bx = 1;

E mene zanima kako ja mogu mjenjati taj 'x' ovisno o iteraciji u petlji bez da upotrebljavam switch petlju za svaki slučaj jer dok se radi o velikom broju ponavljanja switch petlja postaje stvarno preduga a ja sam ograničen malom ROM memorijom mikro kontrolera pa trebam efikasniji kod.

Ako nemože tako kako sam si ja zamislio da li postoji možda neki drugi način? Uglavnom bitno mi je da je kod što manji.

Windows 95 /Win’ dz/: n., 32-bit extensions and a graphical shell for a 16-bit patch to an 8-bit operating system
originally coded for a 4-bit microprocessor, written by a 2-bit company, that can’t stand 1 bit of competition.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1236



+93 Profil

icon Re: Ubacivanje varijable u naredbu13.01.2010. u 09:07 - pre 142 meseci
Mnogo zavisi od toga kako izgleda "funkcija x". Jedno rešenje je if-else-if koji bi bio pametniji od switcha. Napiši objašnjenje šta x treba da bude u svakom od slučajeva.
 
Odgovor na temu

wiktor91
Varazdin, Hrvatska

Član broj: 171052
Poruke: 116
*.adsl.net.t-com.hr.



Profil

icon Re: Ubacivanje varijable u naredbu13.01.2010. u 14:13 - pre 142 meseci
Evo otprilike ovako

Code:

while (1)
{
for ( int i = 0; i <= 7; i++)
{
 PORTB.Bi = 1; // inače bi to pisao bez for petlje i pisao bi za svaki slučaj PORTB.B1 = 1 pa onda PORTB.B2 = 1 i tako do PORTB.B=7
}
}


Znači trebalo bi se ovisno o 'i' mjenjati i bit kojemu pristupam tj. PORTB.B(i) tj. u prvom slučaju bi to bilo PORTB.B0, u drugom PORTB.B1 i tako dalje pa sve do PORTB.B7. Naravno da to mogu rješiti sa IFovima ali sam jako ograničen memorijom a trebam još napraviti podosta toga i neče mi stati u ROM ako ču se razbacivati tako sa memorijom.


Windows 95 /Win’ dz/: n., 32-bit extensions and a graphical shell for a 16-bit patch to an 8-bit operating system
originally coded for a 4-bit microprocessor, written by a 2-bit company, that can’t stand 1 bit of competition.
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1236



+93 Profil

icon Re: Ubacivanje varijable u naredbu13.01.2010. u 14:59 - pre 142 meseci
Ako je samo to onda je prosto. Treba ti samo niz pointera na članice (pointer to member variables). To su u suštini ofseti unutar strukture. Ako je data struktura

Code:

struct PORT
{
  int B1;
  int B2;
};

onda treba da napraviš pomoćni niz

Code:

int PORT::* niz[] = {&PORT::B1, &PORT::B2};

a onda članovima nekog objekta port tipa PORT sada možeš da pristupaš i sa port.*niz[x], gde je x jednako 0 ili 1. Na primer

Code:

for (int i = 0; i < 2; ++i)
  port.*niz[i] = 5 + i;

Po izvršenju ovog koda port.B1 će biti 5 a port.B2 će biti 6. Preduslov da ovo može da se kompajlira je da su B1 i B2 istog tipa (int).
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Ubacivanje varijable u naredbu

[ Pregleda: 1209 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.