Αποστολέας Θέμα: Επιστρέφει τα ψηφία ενός οποιουδήποτε αριθμου  (Αναγνώστηκε 1507 φορές)

nikolasmer

  • Ομάδα Νέου Λυκείου
  • *
  • Μηνύματα: 522
  • There can be only one...may it be AEPP.
Μπορώ να δημιουργήσω διαδικασία η οποία θα δέχεται έναν θετικό ακέραιο και θα μου επιστρέφει τα ψηφία του αριθμού αυτού; Χωρίς φυσικά να γνωρίζω την τάξη του αρχικού αριθμού που εισαγω και από πόσα ψηφία αυτός αποτελείται .
Απ' τα τσακάλια δεν γλυτώνεις μ'ευχές ή παρακάλια
(Κ. Βάρναλης)

Μερεντίτης Νικόλαος
Καθηγητής Πληροφορικής - Φροντιστής

ssimaiof

  • Πληροφορικοί Δυτικής Μακεδονίας
  • *
  • Μηνύματα: 20
Απ: Επιστρέφει τα ψηφία ενός οποιουδήποτε αριθμου
« Απάντηση #1 στις: 30 Μάρ 2017, 01:09:49 μμ »
Μπορούμε να καταχωρίσουμε τα ψηφία σε ένα πίνακα, επειδή όμως δεν γνωρίζουμε το πλήθος των ψηφίων, άρα και το ακριβές μέγεθος του πίνακα θα πρέπει στη δήλωση του πίνακα να κρατήσουμε ένα ικανό αριθμό θέσεων (που πάντως παραμένει αυθαίρετος) και να χρησιμοποιήσουμε μια μεταβλητή για τον ακριβή αριθμό των ψηφίων. Π.χ. στο παρακάτω παράδειγμα έχουμε πίνακα 10 θέσεων άρα λειτουργεί για αριθμούς μέχρι 10 ψηφία.
Κώδικας: [Επιλογή]
ΠΡΟΓΡΑΜΜΑ Ψηφία
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ψ[10], α, κ, i
ΑΡΧΗ
  ΓΡΑΨΕ 'Δώστε έναν φυσικό αριθμό :  '
  ΔΙΑΒΑΣΕ α
  ΚΑΛΕΣΕ Διαχωρισμός_Ψηφίων(α, Ψ, κ)
  ΓΡΑΨΕ 'Πλήθος Ψηφίων : ', κ
  ΓΡΑΨΕ 'Τα ψηφία είναι :  '
  ΓΙΑ i ΑΠΟ κ ΜΕΧΡΙ 1 ΜΕ_ΒΗΜΑ -1
    ΓΡΑΨΕ Ψ[i], ' '
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

ΔΙΑΔΙΚΑΣΙΑ Διαχωρισμός_Ψηφίων(α, Ψ, κ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ψ[10], α, κ
ΑΡΧΗ
  κ <- 0
  ΟΣΟ α <> 0 ΕΠΑΝΑΛΑΒΕ
    κ <- κ + 1
    Ψ[κ] <- α mod 10
    α <- α div 10
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ
ΠΑΡΑΤΗΡΗΣΗ: Το παραπάνω δουλεύει για φυσικούς αριθμούς (όχι αρνητικούς, όχι μηδέν, δηλ. θετικούς ακέραιους όπως η εκφώνηση).