Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

Rotiranje polja

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
tonni
Profesionalec


Pridružen/-a: Tor Jan 2004 9:27
Prispevkov: 108

PrispevekObjavljeno: Pet Okt 10, 2008 8:57 am    Naslov sporočila: Rotiranje polja Odgovori s citatom

živjo

Ne vem,če je to problem ampak meni nekako ne gre.
Imam spremenljivko tipa polje npr. stevilka(i).To polje setavlja
10 bytev(i= 1 to 10).Jaz bi pa rad v določeni situaciji premaknil
prvih 5 bytev v naslednjih 5.Iz stevilka(1) v stevilka(6),stevilka(2)
v stevilka(7) itd.Poizkušal sem z shift in rotate,pa ne gre.Rabil bi
čim bolj enostavno operacijo,ker gre v resnici za bolj obširno polje
kot je ta primer.

lp
tonni
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Pet Okt 10, 2008 11:05 am    Naslov sporočila: z Odgovori s citatom

Z shift premikaš bite v enem bajtu,
Če imaš

dim bajti(10) as Byte

in bi rad prenesel iz Bajt(1) v bajt(6) . iz 2 v 7 itd vse iz 5 v 10
bo potrebna recimo taka zanka

for i = 1 to 5
j = i + 5
bajt(j) = bajt(i)
next


toda to ni rotacija vsebine ...

_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Gustav
Profesionalec


Pridružen/-a: Pon Jun 2005 17:19
Prispevkov: 768

PrispevekObjavljeno: Pet Okt 10, 2008 12:25 pm    Naslov sporočila: Re: Rotiranje polja Odgovori s citatom

tonni je napisal/a:
živjo

Ne vem,če je to problem ampak meni nekako ne gre.
Imam spremenljivko tipa polje npr. stevilka(i).To polje setavlja
10 bytev(i= 1 to 10).Jaz bi pa rad v določeni situaciji premaknil
prvih 5 bytev v naslednjih 5.Iz stevilka(1) v stevilka(6),stevilka(2)
v stevilka(7) itd.Poizkušal sem z shift in rotate,pa ne gre.Rabil bi
čim bolj enostavno operacijo,ker gre v resnici za bolj obširno polje
kot je ta primer.


To je nesmiseln pristop, ce je pdoatkov res veliko; ne premikas podatkov, ampak namesto spremenis indeks zacetnega elementa, kar je povsem nezahtevna operacija v primerjavi premika ogromno podatkov. Ce je bil prej prvi element tisti z indeksom 0, je zdaj s 5.

Rutine, ki dostopajo do do polja podatkov morajo seveda vedno preveriti ali je indeks znotraj obsega polja, in ce ni, indeks ustrezno popraviti. Do polja tako ne dostopas vec direktno, ampak skozi dodatno funkcijo.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
vilko
Profesionalec


Pridružen/-a: Pon Jan 2004 11:54
Prispevkov: 807
Kraj: Ljubljana

PrispevekObjavljeno: Pet Okt 10, 2008 9:18 pm    Naslov sporočila: ni Odgovori s citatom

tvoj odgovor gustav drži, a ni primeren za začetnbika
_________________
Sliši se paradoksalno, a je vendarle res:
Nekateri ljudje imajo vedno vse prav. No, včasih.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Gustav
Profesionalec


Pridružen/-a: Pon Jun 2005 17:19
Prispevkov: 768

PrispevekObjavljeno: Sob Okt 11, 2008 8:44 am    Naslov sporočila: Odgovori s citatom

Jaz basica ne uporabljam, v C-ju je pa zadeva preprosta:

Koda:

#define VELIKOST_POLJA 1024

unsigned char[VELIKOST_POLJA] polje; /* to je polje bajtov */
unsigned int zacetek; /* kazalec na prvi element */

unsigned char element(unsigned int indeks)
{
   if (zacetek + indeks > VELIKOST_POLJA - 1)
        element = polje[zacetek + indeks - VELIKOST_POLJA - 1];
   else
        element = polje[zacetek + indeks - 1];
}

...

/* nekje v programu */

zacetek = 512;
spremenljivka = element[1]; /* spremenljivka dobi vrednost 512. elementa polja in ne 1., brez da bi prej vseh 1024 vrednosti premetaval naokoli */

...


Vecje kot je polje, vec prihranis s takim pristopom. Nekje je tocka, kjer je polje tako majhno, da se vseeno bolj splaca premetavati podatke, kakor uporabljati funkcijo za dostop do njega.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group