Αποστολέας Θέμα: Απορία στην Στοιβα  (Αναγνώστηκε 1206 φορές)

alkisg

  • Τεχνικός / καθαρίστρια
  • *****
  • Μηνύματα: 5844
    • Ο Διερμηνευτής της ΓΛΩΣΣΑΣ
Απ: Απορία στην Στοιβα
« Απάντηση #30 στις: Σήμερα στις 05:18:55 μμ »
> Πρόσφατα κάπου διάβασα ότι στοίβα και σωρός άρχισαν να τα διαφοροποιούν.

Είναι εντελώς διαφορετικές δομές stack και heap, αν κάπου/κάποτε διδάχτηκαν ως ίδια, έγινε σοβαρό λάθος...

Στοίβα χρησιμοποιούμε όταν δηλώνουμε τοπικές μεταβλητές, π.χ.: char c = 'a';
Σωρό χρησιμοποιούμε όταν κάνουμε malloc (pointers), π.χ.: char *s = (char *) malloc(100);

ΔΗΜΗΤΡΗΣ Χ

  • Βετεράνος
  • ****
  • Μηνύματα: 81
Απ: Απορία στην Στοιβα
« Απάντηση #31 στις: Σήμερα στις 05:41:45 μμ »
ΕΓΩ ΘΑ ΗΘΕΛΑ ΝΑ ΘΕΣΩ ΜΙΑ ΕΡΩΤΗΣΗ:
ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ, ΕΝΑ ΘΕΜΑ ΣΑΝ ΤΑ ΠΑΡΑΚΑΤΩ ΕΥΣΤΑΘΕΙ?

Ένας λογιστής συνεργάζεται με τον βοηθό του και τοποθετεί τους φακέλους των πελατών για τους οποίους  θέλει να καταγράψουν όνομα, έσοδα, και έξοδα του καθενός σε ένα αρχείο στον υπολογιστή του. Να φτιάξετε πρόγραμμα το οποίο περιγράφει την διαδικασία ως εξης
Α. χρησιμοποιει τρεις πινακες ον[200], ες[200] και εξ[200] για να πραγματοποιηθεί σε αυτούς η λειτουργία της στοίβας
Β. πραγματοποιείται επαναληπτικά η παρακάτω διαδικασία:
Ο χρήστης επιλέγει ‘Ω’ για τοποθέτηση φακέλου στη στοίβα, ‘Α’ για να πάρει φάκελο ο βοηθός από τη στοίβα ώστε να περαστούν τα στοιχεία όνομα, έσοδα και έξοδα στον υπολογιστή, και ‘Τ’ για τερματισμό και βέβαια πραγματοποιείται κάθε φορά η αντίστοιχη λειτουργία.( Στην περίπτωση της τοποθέτησης φακέλου, θα ελέγχει αν υπάρχει χώρος στην στοίβα, θα διαβάζει το όνομα τα έσοδα και τα έξοδα του πελάτη και θα τα τοποθετεί στην αντίστοιχη στοίβα, διαφορετικά θα εμφανίζει μήνυμα «η στοίβα είναι γεμάτη». Στην περίπτωση της απώθησης, θα ελέγχει αν υπάρχει κάποιο στοιχείο στις στοίβες, θα το εμφανίζει και θα το βγάζει από τη στοίβα, διαφορετικά θα εμφανίζει μήνυμα «η στοίβα είναι Άδεια» .

Γ. για τους φακέλους που τοποθετούνται στη στοίβα μετράει το πλήθος τους και εκτυπώνει πόσοι και ποιοι πελάτες εχουν έσοδα>εξοδα κατά περισσότερο από 10.000 ευρώ
Δ. για τους φακέλους που απωθούνται από τη στοίβα για να περαστούν τα στοιχεία, υπολογίζει και εκτυπώνει μεσο όρο εσόδων και εξόδων καθώς και ποιος είχε τα περισσότερα έσοδα
Ε. . Αν στο τέλος δεν έχει απομείνει κανένας  φάκελος στη στοίβα, εκτυπώνει ‘ η στοιβα άδειασε’, διαφορετικα για τους φακέλους που μετά τον τερματισμό της διαδικασίας έχουν απομείνει στη στοίβα, υπολογίζει και εκτυπώνει πόσοι και ποιοι πελάτες έχουν εσοδα>=20.000 ευρώ, περισσότερα έξοδα και ποιος τα έχει.


Η ΓΝΩΜΗ ΜΟΥ ΕΙΝΑΙ ΟΤΙ - ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΜΑΣ - ΕΥΣΤΑΘΕΙ. ΜΕ ΟΤΙ ΓΝΩΣΕΙΣ ΕΧΟΥΝ ΤΑ ΠΑΙΔΙΑ ΑΠΟ ΠΙΝΑΚΕΣ + ΩΘΗΣΕΙΣ ΚΑΙ ΑΠΩΘΗΣΕΙΣ ΜΠΟΡΟΥΝΕ ΝΑ ΤΟ ΔΙΑΧΕΙΡΙΣΤΟΥΝΕ.
ΑΝΑΓΝΩΡΙΖΩ ΟΤΙ ΤΕΧΝΙΚΑ Η ΣΤΟΙΒΑ ΜΕ ΤΗ ΧΡΗΣΗ ΤΗΣ ΕΧΕΙ ΠΟΛΛΕΣ ΦΟΡΕΣ ΠΙΟ ΑΥΣΤΗΡΗ ΧΡΗΣΗ ΜΕΣΩ ΩΘΗΣΕΩΝ ΑΠΩΘΗΣΕΩΝ ΜΟΝΟ, ΑΛΛΑ ΝΟΜΙΖΩ ΟΤΙ ΕΔΩ -  ΣΤΟ ΒΙΒΛΙΟ  ΚΑΙ ΓΕΝΙΚΑ ΣΤΟ ΜΑΘΗΜΑ - ΔΕΝ ΑΝΑΦΕΡΕΤΑΙ ΚΑΠΟΙΟΣ ΤΕΤΟΙΟΣ ΠΕΡΙΟΡΙΣΜΟΣ.

ΕΓΩ ΘΑ ΗΘΕΛΑ ΜΙΑ ΥΠΕΥΘΥΝΗ ΑΠΑΝΤΗΣΗ ΓΙΑ ΤΟ ΑΝ ΤΕΛΙΚΑ ΚΑΤΙ ΤΕΤΟΙΟ ΕΙΝΑΙ ΣΤΑ ΠΛΑΙΣΙΑ ΤΟΥ ΜΑΘΗΜΑΤΟΣ ΜΑΣ.
« Τελευταία τροποποίηση: Σήμερα στις 06:45:31 μμ από ΔΗΜΗΤΡΗΣ Χ »

ssimaiof

  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 37
Απ: Απορία στην Στοιβα
« Απάντηση #32 στις: Σήμερα στις 06:30:51 μμ »
> Πρόσφατα κάπου διάβασα ότι στοίβα και σωρός άρχισαν να τα διαφοροποιούν.

Είναι εντελώς διαφορετικές δομές stack και heap, αν κάπου/κάποτε διδάχτηκαν ως ίδια, έγινε σοβαρό λάθος...

Στοίβα χρησιμοποιούμε όταν δηλώνουμε τοπικές μεταβλητές, π.χ.: char c = 'a';
Σωρό χρησιμοποιούμε όταν κάνουμε malloc (pointers), π.χ.: char *s = (char *) malloc(100);

Όχι δεν διδάχτηκαν και τα δύο. Όχι το heap. Προφανώς αποτελεί θέμα ελληνικής μετάφρασης των αντίστοιχων αγγλικών όρων. Το stack μεταφράστηκε σε σωρό. Δυστυχώς δεν βρήκα το δικό μου βιβλίο, αλλά βρήκα το Επεξεργασία Δεδομένων σελ. 115 της Γ' τάξης Ενιαίου Πολυκλαδικού Λυκείου (έκδοση 1993) όπου αναφέρει όσα γνωρίζουμε για τη στοίβα χωρίς να αναφέρει πουθενά τον όρο στοίβα αλλά στη θέση της τον όρο σωρό (stack).
Προφανώς από ότι κατάλαβα, όπως τα είπες, ΤΩΡΑ με τον όρο σωρό αναφερόμαστε στο heap.
Ευχαριστώ για τη διευκρίνηση.
Σταύρος Σημαιοφορίδης