***** 3 Febbraio 2000. Direttorio 00-02-03 ***** --------------- COSA SI FA IN QUESTA ESERCITAZIONE ----------------- Sia data la seguente specifica del tipo astratto Albero. TIPO_ASTRATTO Albero(Elem) COMMENTO rappresenta strutture gerarchiche composte da elementi, detti nodi, di un dominio prefissato, e da archi che collegano tali elementi. SORTE Alb : la sorta di interesse del tipo Elem : la sorta per il dominio dei nodi degli alberi FUNZIONI AlbVuoto: () --> Alb precondizioni e postcondizioni per AlbVuoto = a pre: nessuna post: a e' l'albero vuoto EstVuoto: (Alb) --> Boolean precondizioni e postcondizioni per EstVuoto(a) = b pre: nessuna post: b e' true se ae l'albero vuoto, false altrimenti FaiNodo: (Elem) --> Alb precondizioni e postcondizioni per FaiNodo(n) = a pre: nessuna post: a e' l'albero composto da un unico nodo radice n Radice: (Alb) --> Elem precondizioni e postcondizioni per Radice(a) = e pre: a non e' vuoto post: e e' la radice di a Primo: (Alb) --> Alb precondizioni e postcondizioni per Primo(a) = b pre: a non e' vuoto post: b e' il primo sottoalbero di a; b e' vuoto se a non ha sottoalberi Resto: (Alb) --> Alb precondizioni e postcondizioni per Resto(a) = b pre: a non e' vuoto post: b e' l'albero ottenuto da a eliminando il primo sottoalbero; b e' a se a non ha sottoalberi FaiAlb: (Alb; Alb) --> Alb precondizioni e postcondizioni per FaiAlb(a, c) = d pre: nessuna post: d e' l'albero ottenuto da a inserendo c come primo sottoalbero; d e' vuoto se a e c sono vuoti; d e' a se c e' vuoto; d e' c se a e' vuoto FINE_TIPO_ASTRATTO 1. Si progetti una classe C++ che realizzi il tipo astratto Albero. Si adotti lo schema realizzativo funzionale con condivisione. 2. Si progetti una funzione C++ esterna non friend che prenda un Albero in ingresso e ne stampi la rappresentazione parentetica. 3. Si progetti una funzione C++ che dato un albero restituisca l'albero speculare ************************************************************************** *** IMPORTANTE *** IMPORTANTE *** IMPORTANTE *** IMPORTANTE *** IMPORTANTE ************************************************************************** - Firma registro presenza