ΠΟΛΥΤΕΧΝΕΙΟ ΚΡΗΤΗΣ
Τμήμα Ηλεκτρονικών Μηχ. και Μηχ. Υπολογιστών

ΛΟΓ 102: Τεχνολογία Λογισμικού Ι
http://www.softlab.ntua.gr/~nickie/TUC/log102/

Θέματα Εξετάσεων

Ημερομηνία εξέτασης:

Τρίτη 6 Ιουνίου 2000

Διάρκεια: 3 ώρες
Ποσοστό επί της συνολικής βαθμολογίας:

70%


Άσκηση 1 (30%)

Να γραφεί συνάρτηση σε C η οποία να εκτυπώνει ένα μη αρνητικό ακέραιο αριθμό μεγάλου μήκους (unsigned long) σε δεδομένο σύστημα αρίθμησης με βάση b. Η συνάρτηση θα πρέπει να έχει την εξής επικεφαλίδα:

   void print (unsigned long int l, unsigned char b);

και θα πρέπει να είναι αναδρομική, δηλαδή να καλεί τον εαυτό της. Επίσης, δεν επιτρέπεται η χρήση οποιασδήποτε τοπικής ή καθολικής μεταβλητής στο εσωτερικό της συνάρτησης. Χρησιμοποιώντας τη συνάρτηση print, το ακόλουθο πρόγραμμα:

   void main ()
   {
      printf("99 base 7 is "); print(99, 7); printf(".\n");
      printf("134 base 6 is "); print(134, 6); printf(".\n");
   }

θα πρέπει να τυπώνει το αποτέλεσμα:

   99 base 7 is 201.
   134 base 6 is 342.

Άσκηση 2 (30%)

Να γραφεί συνάρτηση σε C που να αφαιρεί από μια διπλά συνδεδεμένη λίστα ακεραίων αριθμών όλα τα στοιχεία που είναι ίσα με δοθέντα αριθμό t. Η επικεφαλίδα της συνάρτησης δίνεται παρακάτω:

   void dlistRemove (dlist * lp, int t);

Άσκηση 3 (40%)

Να γραφεί πρόγραμμα σε C που να δέχεται σαν όρισμα στη γραμμή εντολής το όνομα ενός αρχείου κειμένου και να εκτυπώνει τον αριθμό των κενών γραμμών που περιέχονται μέσα σε αυτό το αρχείο. Μια γραμμή θεωρείται κενή αν περιέχει μόνο κενούς χαρακτήρες (χρησιμοποιήστε τη συνάρτηση βιβλιοθήκης isspace). Το πρόγραμμα πρέπει να τυπώνει κατάλληλα διαγνωστικά μηνύματα σε περίπτωση σφάλματος. Να αναφέρετε όλες τις παραδοχές για τη μορφή του αρχείου που πιθανώς θα κάνετε.


Καλή επιτυχία.


Νίκος Παπασπύρου (nickie@softlab.ntua.gr). 6/6/2000 .