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 pentru vizita pe platforma noastră dedicată Informatică. Sperăm că informațiile oferite v-au fost utile. Dacă aveți întrebări sau aveți nevoie de sprijin suplimentar, vă încurajăm să ne contactați. Revenirea dumneavoastră ne bucură, iar dacă v-a plăcut, nu uitați să adăugați site-ul nostru la favorite!