Archief - [PROG][C++] arrays + linked list

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

M C

Legacy Member
k zal even de situatie proberen te schetsen:

Ik heb 3 arrays tot nu toe. Alle 3 deze arrays bevatten verschillende tijdstippen (zie code hieronder).

C++ code:

const int MAXQUEUE = 10 ;

Timestamp myarray[MAXQUEUE];
Timestamp myarray2[MAXQUEUE];
Timestamp OWDarray[MAXQUEUE];

Timestamp ts;
ts = *(p->data() + (p->length() - 8));

Timestamp now = Timestamp::now();

index = seq_nr % MAXQUEUE;
myarray[index] = ts;
myarray2[index] = now;

Timestamp OWD;
OWDarray[index] = (now - ts);

Je ziet dus 3 arrays, de laatste array is het verschil van de 2 arrays ervoor. Het zijn dus tijdstippen van pakketten dat je hier ziet. De laatste array (de OWD-array) is het verschil tussen wnr het pakket verzonden is en wnr het pakket aangekomen is (=delay). Elk pakket bevat een sequentienummer. Er worden telkens 2 pakketten vlak na elkaar verstuurd (bijna gelijktijdig dus), we hebben het dus over een pakketpaar.

Wat wil ik nu bekomen?

Het zou de bedoeling zijn dat bij elke 10 pakketten (5 pakketparen) IN DE OWDarray hieruit de kleinste OWD som (delay pakket1 + delay pakket2, deze 2 pakketten zijn dus eigenlijk een pakketpaar zoals ik al zei, maar ze hebben elk een verschillend sequentienummer) wordt gehaald.

Als dit gebeurd is moet ik van deze 2 pakketten (het beste pakketpaar) de tijd gaan halen wanneer deze aangekomen zijn. DUS de tijd dat is opgeslagen in deze array: myarray2[index] = now.

Zo.. alle hulp is welkom!

killgore

Legacy Member
ingewikkelde structuur imho.

Waarom werk je niet met klasses of structs :x?

Dat zou je al immens vooruit helpen.

Vich

Legacy Member
Wat killgore zegt.

Verder:
Je hebt het over pakketten en OWD, maar die begrippen leg je niet uit, waardoor het moeilijk is voor de lezer om het probleem in te schatten.
Daarbij is het ook altijd af te raden om je variabelen namen te geven zoals 'myarray'. Code hoort een goede naamgeving te krijgen, omdat dit dan duidelijk kan maken wat de bedoeling van die code is. Zo krijg je 'gratis' documentatie zonder al te veel moeite.

killgore

Legacy Member
Ik kende beide begrippen wel :), maar het probleem ligt bij zijn structuur he, eens uitleggen wat imho beter kon:

Je kan bv. zeer simpel 2 klasses maken:
Packet (houdt alle info, ook die tijdstippen en zo, zelf bij)
PacketPair (gewoon 2 velden voor elk Packet + enkele hulpfies, zoals sendPair, die het eerste packet en onmiddellijk het 2e stuurt).

En dan PacketPairs in een listing steken. Dan hoor je gewoon per PacketPair de totale one-way delay op te halen en kan je een eenvoudig min/max algoritme toepassen.

Een paar dingen (zoals het verzenden) zal je hier eventjes anders gaan moeten implementeren, maar is imho toch al een simpelere manier van werken, en dat heeft me denk ik 10s denktijd gekost. Je moet niet met die PacketPair oplossing werken bv, ik dacht gewoon dat deze handig kon zijn aangezien je toch over paartjes spreekt.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan