ΠΟΛΥΤΕΧΝΕΙΟ
ΚΡΗΤΗΣ Τμήμα Ηλεκτρονικών Μηχ. και Μηχ. Υπολογιστών ΛΟΓ 201: Τεχνολογία Λογισμικού
ΙΙ |
Ημερομηνία εξέτασης: |
Τρίτη 13 Ιουνίου 2000 |
Διάρκεια: | 3 ώρες |
Ποσοστό επί της συνολικής βαθμολογίας: |
60% |
Ζητείται να υλοποιηθεί ένα class template με όνομα Set<T>
,
τα αντικείμενα του οποίου να παριστάνουν σύνολα από στοιχεία τύπου T
.
Οι ελάχιστες επιθυμητές λειτουργίες είναι οι ακόλουθες:
add
: προσθήκη στοιχείου.member
: έλεγχος αν ένα στοιχείο ανήκει στο σύνολο.<=
: σχέση υποσυνόλου==
: ισότητα συνόλων<<
: εκτύπωση συνόλων Για την υλοποίηση των συνόλων μπορείτε να χρησιμοποιήσετε τα παρακάτω class
templates, που θεωρείται ότι έχουν ήδη υλοποιηθεί. Το List<T>
υλοποιεί μια απλά συνδεδεμένη λίστα από στοιχεία τύπου T
, ενώ το
ListIterator<T>
υλοποιεί έναν iterator για τα στοιχεία της
λίστας.
template <class T>
class List
{
public:
List ();
~List ();
void insert (const T & t);
}; template <class T>
class ListIterator
{
public:
ListIterator (const List<T> & l);
bool get ();
T current () const;
};
Για τον έλεγχο της σωστής λειτουργίας του template, να γραφεί κατάλληλο σύντομο πρόγραμμα.
Να γραφεί ένα πρόγραμμα σε περιβάλλον Unix System V που κατά την εκτέλεσή του να ξεκινάει n διεργασίες. Η τιμή του n θα δίνεται στη γραμμή εντολής του προγράμματος. Κάθε μια από τις διεργασίες θα πρέπει να εκτυπώνει συνεχώς ένα μήνυμα της μορφής:
Process i running.
για i από 0 ως n-1. Οι διεργασίες όμως θα πρέπει να συγχρονίζονται, ώστε τα μηνύματα να εμφανίζονται με την εξής σειρά:
0, 1, 2, ... n-1, 0, 1, 2, ... , n-1 , 0, 1, 2 ...
Υπόδειξη: για το συγχρονισμό των διεργασιών προσφέρεται η χρήση σηματοφορέων.
Καλή επιτυχία.
nickie@softlab.ntua.gr
).
13/6/2000
.