Escriviu una funció separa
que, donada una llista lp de punts
i un real x, torni dues llistes: lp1 amb els punts de lp
amb la coordenada x estrictament menor que x, i lp2 amb els
punts de lp amb la coordenada x estrictament major que x.
lp ha de quedar buida. Observació: Si algun punt a la llista lp
té la coordenada x igual a x, no apareixerà a cap de les llistes de
sortida.
void separa(list<Punt> &lp, float x, list<Punt> &lp1, list<Punt> &lp2); /* Pre: lp1 i lp2 estan buides */ /* Post: lp1 conté els punts de lp amb la coordenada x estrictament menor que x, lp2 conté els punts de lp amb la coordenada x estrictament major que x, lp està buida.*/
Entrada
Com a entrada hi haurà el nombre de punts i els punts de la llista (cada punt té dues coordenades reals). A continuació hi haurà varis valors de la coordenada x.
Sortida
Com a sortida es mostrarà l’estructura de la llista de punts original i, per cada coordenada x d’entrada, el valor x i les llistes lp1 i lp2 obtingudes al separar la llista original amb el valor x.
Observació
A més de la funció separa
dins del fitxer
list_punt_separa.cpp
, heu d’implementar els fitxers
listIOpunt.hpp
i listIOpunt.cpp
, amb les operacions de lectura i
escriptura per a llistes instanciades amb Punt
. Podeu agafar com a
model els fitxers listIOint.hpp
i listIOint.cpp
que contenen les
operacions de lectura i escriptura per a llistes d’enters.
Heu d’enviar la solució comprimida en un fitxer .tar:
tar cvf program.tar list_punt_separa.cpp listIOpunt.hpp listIOpunt.cpp
Observeu que per compilar us donem el Makefile
, el mòdul Punt
,
la capçalera del mòdul funcional list_punt_separa.hpp
i el programa
principal program.cpp
.
Input
5 2 1 6 5 7 0 3 2 5 0 3 2 7
Output
[(2, 1),(6, 5),(7, 0),(3, 2),(5, 0)] 3 [(2, 1)] [(6, 5),(7, 0),(5, 0)] 2 [] [(6, 5),(7, 0),(3, 2),(5, 0)] 7 [(2, 1),(6, 5),(3, 2),(5, 0)] []