Wędrująca "jedynka" w C++

0

Witam.
Mam do napisania kod w C++:
a)pętla będzie zwracała "jedynkę" na wszystkich portach umieszczonych obok siebie - chodzi o zmienną typu int, która będzie k pojawiała się na kolejnych bitach czterech 8-bitowych portów (czyli 1 bit na 1 porcie, 2 bit na 2 porcie [...] 5 bit na 1 porcie itd.)
b)badanie liczby pod względem parzystości i czy jest liczbą pierwszą

teoretycznie mam bazować na pętli for i za bardzo nie wiem jak taki kod miałby wyglądać, ma ktoś może jakiś pomysł jak to rozwiązać ?
Będę wdzięczny za każdą pomoc.
Pozdrawiam.

0
unsigned char PortValue[4];
int Bit32=0;
for(unsigned i=128;i;i>>=1) for(unsigned char *pv=PortValue+3;pv>=PortValue;--pv) (Bit32|=(i&(*pv))!=0)<<=1;
0

po wprowadzeniu kodu, który mi podałeś powyżej pojawia mi się błąd podczas kompilowania, że *pv nie zostało zdefiniowane i co za tym idzie kod nie działa - jakieś sugestie ?

0

Skorzystanie z innego kompilatora, bo ten kod jest poprawny: http://ideone.com/5HzdL6

0

nie mogę użyć innego - taki został narzucony (jest to Keil uVision - jakiś bajer do symulacji na mikroprocesorach)

tu link do 1 z kodów, który miałem do wykonania wcześniej : user image
P0 to oczywiście port 0, coś takiego śmigało normalnie. Podejrzewam, że ten kod który otrzymałem od was jest zbyt "skomplikowany" jak na ten program, który wywala błędy w najmniej spodziewanych miejscach :)

0
Poldas napisał(a):

Witam.
Mam do napisania kod w C++:
a)pętla będzie zwracała "jedynkę"

Pętla niczego nie zwraca.

Poldas napisał(a):

na wszystkich portach umieszczonych obok siebie - chodzi o zmienną typu int, która będzie k pojawiała się na kolejnych bitach czterech 8-bitowych portów (czyli 1 bit na 1 porcie, 2 bit na 2 porcie [...] 5 bit na 1 porcie itd.)
b)badanie liczby pod względem parzystości i czy jest liczbą pierwszą

teoretycznie mam bazować na pętli for i za bardzo nie wiem jak taki kod miałby wyglądać, ma ktoś może jakiś pomysł jak to rozwiązać ?
Będę wdzięczny za każdą pomoc.
Pozdrawiam.

Nic nie zrozumiałem. Co to są porty? Program pisze coś do LPT czy innego urządzenia???

1

Pewnie masz C a nie C++

unsigned char PortValue[4],*pv;
int Bit32=0;
for(unsigned i=128;i;i>>=1) for(pv=PortValue+3;pv>=PortValue;--pv) (Bit32|=(i&(*pv))!=0)<<=1;
0

to wystarcza w zupełności, dzięki za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1