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

kako ? -brzo uporedjivanje nizova

[es] :: C/C++ programiranje :: kako ? -brzo uporedjivanje nizova

[ Pregleda: 4999 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jc denton

Član broj: 2358
Poruke: 1705
*.ptt.yu



Profil

icon kako ? -brzo uporedjivanje nizova17.02.2002. u 01:30 - pre 269 meseci
Treba mi kod u asembleru ili c++ koji ce brzo da uporedi dva niza ili memorijska bloka, a da mogu da ga pozovem iz Visual basic-a i da mi vrati neke rezultate (recimo kao kad zovem neku API funkciju pa mi ta funkcija vrati neku vrednost).

Ja iz VB mogu da prosledim pointer na prvi elemenat niza, tj. pointer na pocetak memorijskog bloka gde je niz (oba niza koji se uporedjuju su byte tipa).

Uporedjivanje nizova treba da se izvrsi na sledeci nacin :

Kod treba da uporedi neparne bajtove iz prvog niza sa neparnim iz drugog, pa onda parne iz prvog i parne iz drugog i da vrati razlike za prvi i drugi slucaj.

znaci ovako:

uporedjivanje neparnih bajtova :

prviniz bajt1 bajt2 bajt3 .... bajtn
| |
drugi bajt1 bajt2 bajt3 .... bajtn
vraca broj razlicitih neparnih

uporedjivanje parnih bajtova :

prviniz bajt1 bajt2 bajt3 .... bajtn
|
drugi bajt1 bajt2 bajt3 .... bajtn
vraca broj razlicitih parnih

Ako je ovo suvise komplikovano u asembleru, kako u Visual C++ da na osnovu pointera na pocetak niza (pointer na memorijski blok), krenem kroz petlju i uporedjujem redom bajtove ?
Kako se uz pomoc pointera kretati kroz niz u C++?

Napomena :
Ovaj kod potreban mi je da bi veoma brzo (real time) mogao da uporedim dve VGA slike i dobijem procentualnu razliku - ajde cik pogodite zasta sluzi ovo poredjenje?


fire, walk with me
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-1.dialup.nethere.net



+6 Profil

icon Re: kako ? -brzo uporedjivanje nizova17.02.2002. u 02:44 - pre 269 meseci
Za parne:

int BrojRazlicitihParnih (char* niz1, char* iz2, int brojClanova)
{
int retValue = 0;
int i;
for (i = 0; i < brojClanova; i+= 2)
{
if (*(niz1+i) !=*(niz2+i))
retValue++;
}
return retValue;
}

Za neparne isto ovako, samo neka i krene od 1 umesto od 0.

I nema potrebe da se bakćeš sa assemblerom. Dobar C kompajler će ovakvu funkciju da optimizuje bolje nego 99% assembler programera.

Napomena:
char ovde koristim kao 8-bitni int, a one perverzije sa *(niz1+i) koristim jer se na ES-u ne vide uglaste zagrade. Gojko, pomagaj!!!!
 
Odgovor na temu

jc denton

Član broj: 2358
Poruke: 1705
*.ptt.yu



Profil

icon Re: kako ? -brzo uporedjivanje nizova17.02.2002. u 05:57 - pre 269 meseci
ej, hvala covek - zavrsio si mi poso !

Ubio sam dusu sa ovim poredjenjima, ali sta cu bilo mi prilicno hitno ...

Ajde Dragi Tata jos jedno pitanjce - jel znas nesto o DirectShow-u ?


fire, walk with me
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-1.dialup.nethere.net



+6 Profil

icon Re: kako ? -brzo uporedjivanje nizova17.02.2002. u 17:12 - pre 269 meseci
Citat:
jc denton:

Ajde Dragi Tata jos jedno pitanjce - jel znas nesto o DirectShow-u ?



Jedino što sam čuo da postoji :)

Nego, pogledaj
http://www.codeproject.com/directx


 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: kako ? -brzo uporedjivanje nizova17.02.2002. u 21:00 - pre 269 meseci
Citat:
Dragi Tata:
char ovde koristim kao 8-bitni int, a one perverzije sa *(niz1+i) koristim jer se na ES-u ne vide uglaste zagrade. Gojko, pomagaj!!!!


http://www.elitesecurity.org/pomoc.php?

Pogledaj ovu stranicu. Videces koje sve kombinacije uglastih zagrada ne smes da koristis, jer ih forum prebacuje u nesto drugo..
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..ndg-pm4-1.dialup.nethere.net



+6 Profil

icon Re: kako ? -brzo uporedjivanje nizova17.02.2002. u 21:20 - pre 269 meseci
Citat:
Gojko Vujovic:
Citat:
Dragi Tata:
char ovde koristim kao 8-bitni int, a one perverzije sa *(niz1+i) koristim jer se na ES-u ne vide uglaste zagrade. Gojko, pomagaj!!!!


http://www.elitesecurity.org/pomoc.php?

Pogledaj ovu stranicu. Videces koje sve kombinacije uglastih zagrada ne smes da koristis, jer ih forum prebacuje u nesto drugo..


E, pa da. Logično. Problem je u tome što se često koristi i kao brojač za nizove, pa onda forum to smatra za italic. Isti problem se pojavio u primeru koji je blue dao za trim funkciju. Ljudi će da se čude zašto ne radi, a čovek je sve lepo napisao. Ne znam da li bi bilo dobro da koristiš neko drugo slovo za italic. Ili recimo il?
 
Odgovor na temu

[es] :: C/C++ programiranje :: kako ? -brzo uporedjivanje nizova

[ Pregleda: 4999 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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