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 platforma noastră dedicată Informatică. Ne bucurăm dacă informațiile oferite v-au fost de folos. Pentru orice întrebări sau sprijin suplimentar, suntem aici pentru voi – nu ezitați să ne contactați. Vă așteptăm cu drag să reveniți și vă sugerăm să ne salvați în lista de site-uri preferate!