Paquets de Xarxa T85801


Statement
 

pdf   zip   tar

Escriu un programa que simuli un rúter de xarxa (router). El rúter té un buffer intern implementat amb una cua de prioritat de capacitat NN. Cada paquet de xarxa té tres camps: una prioritat (enter), una adreça IP d’origen (string) i una adreça IP de destí (string). Representem un paquet amb l’struct següent:

struct Paquet {
    int prioritat;
    string origen, desti;
};

Per poder fer servir el pro2::Heap amb l’struct Paquet, cal definir l’operador > de la manera següent:

bool operator>(const Paquet& p1, const Paquet& p2) {
    return p1.prioritat > p2.prioritat;
}

El rúter funciona de la manera següent: mentre la cua de prioritat té menys de NN elements, simplement afegeix els paquets entrants a la cua. Quan la cua està plena (té NN elements), abans d’afegir el nou paquet, el rúter treu el paquet amb la prioritat més alta, l’escriu pel canal de sortida, i després afegeix el nou paquet a la cua. Quan ja no hi ha més paquets d’entrada, el rúter buida la cua de prioritat escrivint els paquets restants en ordre de prioritat (de més alta a més baixa).

Entrada

La primera línia conté un enter NN (la capacitat del buffer de el rúter). A continuació, una seqüència de paquets, un per línia, cadascun amb tres camps: prioritat (enter), adreça IP d’origen (string) i adreça IP de destí (string). Les adreces IP tenen el format aaa.bbb.ccc.ddd.

Sortida

Cada paquet que el rúter envia es mostra en una línia amb el format: prioritat, espai, adreça d’origen, espai, adreça de destí.

Observació

Envia program.cc incloent "heap.hh". Descarrega els fitxers públics (icona del gatet).

Public test cases
  • Input

    3
    5 192.168.1.1 10.0.0.1
    2 172.16.0.1 192.168.1.2
    8 10.0.0.5 172.16.0.3
    3 192.168.1.5 10.0.0.2
    1 10.0.0.3 172.16.0.1
    7 172.16.0.5 192.168.1.3
    

    Output

    8 10.0.0.5 172.16.0.3
    5 192.168.1.1 10.0.0.1
    3 192.168.1.5 10.0.0.2
    7 172.16.0.5 192.168.1.3
    2 172.16.0.1 192.168.1.2
    1 10.0.0.3 172.16.0.1
    
  • Information
    Author
    Pau Fernández
    Language
    Catalan
    Other languages
    Spanish
    Official solutions
    C++
    User solutions
    C++