Răspuns :
PROGRAM C++ :
#include <iostream>
using namespace std;
int main(){
//Declarare date
unsigned n,i;
int p[1000]; //Pachete trimise
int s[1000]; //Pachete sosite
//Citire date
cin >> n;
for(i=0;i<n;i++) cin >> p[i];
for(i=0;i<n-1;i++)cin >> s[i];
//Determinare pachet lipsa
bool gasit=0;
for(i=0;i<n-1 && gasit==0;i++){
if(p[i]!=s[i]){
gasit=1;
cout << p[i];
}
}
if(!gasit)cout<<p[n-1];
}
Explicatie :
Pachetul lipsa este primul pachet care apare in p si nu apare in s. Altfel spus, pana la pachetul lipsa cei doi vectori sunt egali.
Astfel e nevoie doar sa comparam p[i] cu s[i] pana cand i ajunge la valoarea n-1 SAU pachetul lipsa a fost gasit pe o pozitie anterioara.
In momentul in care gasim pachetul lipsa in afisam si schimbam valoarea variabilei gasit la 1.
Daca la finalul acestui bloc de cod pachetul nu a fost inca gasit inseamna ca pachetul lipsa este chiar ultimul pachet din p (elementul p[n-1] mai exact).
Completari ale informatiilor date in cerinta
Informatiile de retelistica oferite in cerinta nu sunt complete.
1. "faptul că se mai pierde din când în când câte un pachet pe drum poate să treacă neobservat și să poți viziona videoclipul dorit cu succes"
Afirmatia e adevarata in cazul protocolului UDP (protocol folosit in special pentru streaming).
In cazul protocolului TCP (protocol folosit mai ales pentru transmiterea de documente/informatii) pachetele pierdute sunt retrimise, nu poate sa treaca neobservat.
2. "Elementele din cel de-al doilea șir vor fi în aceeași ordine ca și cele din primul"
In realitate pachetele nu vin neaparat in ordinea in care au fost trimise. Sunt reordonate in ordinea corecta la destinatie (mai ales in cazul TCP).
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru întrebări sau asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!