Προβλήματα στις Στοίβες

Άσκηση 1
Οι web browsers (π.χ. Mozilla Firefox, Google Chrome) διατηρούν τις διευθύνσεις που επισκεφθήκαμε στο ιστορικό τους ώστε να είναι πιο εύκολη η μετάβαση σε αυτές όταν τις ζητήσουμε ξανά. Για το λόγο αυτό διαθέτουν τα κουμπιά ΕΜΠΡΟΣ και ΠΙΣΩ. Πατώντας σtο κουμπί ΠΙΣΩ ο browser μεταφέρεται στη σελίδα που επισκεφθήκαμε προηγουμένως. Αντίστοιχα, όταν βρισκόμαστε σε μία παλιά σελίδα, πατώντας ΕΜΠΡΟΣ προχωράμε στην αμέσως επόμενη. Κάθε φορά που εισάγουμε μία διεύθυνση, αυτή καταχωρείται στο ιστορικό. Όταν βλέπουμε μία παλιά σελίδα και πληκτρολογούμε μία διεύθυνση, τότε όλες οι μεταγενέστερες διευθύνσεις σβήνονται από το ιστορικό και μπαίνει μόνο αυτή.
Για παράδειγμα, έστω ότι έχουμε επισκεφθεί με τη σειρά τις σελίδες:
google.com -> amazon.co.uk -> facebook.com -> twitter.com -> stackoverflow.com
Αν ο χρήστης πατήσει 3 φορές πίσω, τότε θα πρέπει να μεταβεί στη σελίδα amazon.co.uk
Στην συνέχεια, αν πατήσει μπροστά, θα μεταβεί στην σελίδα facebook.com
Αν στη συνέχεια επιλέξει να εισάγει μια νέα διεύθυνση (π.χ. gmail.com), τότε οι σελίδες twitter.com και stackoverflow.com διαγράφονται από το ιστορικό και η διεύθυνση gmail.com τοποθετείται στην κορυφή, όπως φαίνεται παρακάτω:
google.com -> amazon.co.uk -> facebook.com -> gmail.com
Να γράψετε πρόγραμμα το οποίο θα χρησιμοποιεί μία στοίβα 200 θέσεων και θα εκτελεί τις παρακάτω λειτουργίες:
1) Θα ζητάει από τον χρήστη την εισαγωγή μίας εκ των τιμών, ΕΙΣΑΓΩΓΗ, ΠΙΣΩ, ΕΜΠΡΟΣ, ΕΞΟΔΟΣ. Δεν απατείται έλεγχος εγκυρότητας.
2) Όταν ο χρήστης γράψει ΕΞΟΔΟΣ τότε θα ζητείται η διεύθυνση του χρήστη και θα τοποθετείται στην στοίβα, ακριβώς μετά την τρέχουσα διεύθυνση.
3) Όταν ο χρήστης γράψει ΠΙΣΩ, το πρόγραμμα θα πρέπει να εμφανίζει την διεύθυνση που εισήγαγε προηγουμένως, εφόσον υπάρχει.
4) Όταν γράψει ΕΜΠΡΟΣ, θα πρέπει να εμφανίζει την επόμενη διεύθυνση εφόσον υπάρχει.
5) Μετά το τέλος των εντολών που περιγράφονται στα ερωτήματα 2, 3 και 4 το πρόγραμμα να ζητά νέα εντολή, όπως περιγράφεται στο ερώτημα 1. Η επανάληψη να τερματίζει όταν δοθεί η λέξη ΕΞΟΔΟΣ.
Σημείωση: Δεν απαιτείται έλεγχος για την περίπτωση της υπερχείλισης

ΠΡΟΓΡΑΜΜΑ περιηγητές
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: τοπ, τρέχων
  ΧΑΡΑΚΤΗΡΕΣ: ενέργεια, ιστορικό[200] 
ΑΡΧΗ
  τοπ <- 0 ! Ο δείκτης τοπ δείχνει στην τελευταία έγκυρη διεύθυνση στον πίνακα
  τρέχων <- 0 ! Ο δείκτης τρέχων δείχνει στη διεύθυνση όπου ο χρήστης βρίσκεται αυτή τη στιγμή
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ ενέργεια
    ΑΝ ενέργεια = "ΕΙΣΑΓΩΓΗ" ΤΟΤΕ
      τρέχων <- τρέχων + 1
      ΔΙΑΒΑΣΕ ιστορικό[τρέχων] 
      τοπ <- τρέχων ! μετά από εισαγωγή, ακύρωσε όλα τα παλιά στοιχεία
    ΑΛΛΙΩΣ_ΑΝ ενέργεια = "ΠΙΣΩ" ΤΟΤΕ
      ΑΝ τρέχων > 1 ΤΟΤΕ
        τρέχων <- τρέχων - 1
        ΓΡΑΨΕ ιστορικό[τρέχων] 
      ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ_ΑΝ ενέργεια = "ΕΜΠΡΟΣ" ΤΟΤΕ
      ΑΝ τρέχων < τοπ ΤΟΤΕ
        τρέχων <- τρέχων + 1
        ΓΡΑΨΕ ιστορικό[τρέχων] 
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
  ΜΕΧΡΙΣ_ΟΤΟΥ ενέργεια = "ΕΞΟΔΟΣ"
 
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

Αφήστε μια απάντηση

Η ηλ. διεύθυνσή σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *