Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Τμηματικός προγραμματισμός => Γ΄ Λυκείου => Διαδικασίες => Μήνυμα ξεκίνησε από: nikolasmer στις 30 Μαρ 2017, 12:14:31 ΜΜ

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

ΔΙΑΔΙΚΑΣΙΑ Διαχωρισμός_Ψηφίων(α, Ψ, κ)
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: Ψ[10], α, κ
ΑΡΧΗ
  κ <- 0
  ΟΣΟ α <> 0 ΕΠΑΝΑΛΑΒΕ
    κ <- κ + 1
    Ψ[κ] <- α mod 10
    α <- α div 10
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

ΠΑΡΑΤΗΡΗΣΗ: Το παραπάνω δουλεύει για φυσικούς αριθμούς (όχι αρνητικούς, όχι μηδέν, δηλ. θετικούς ακέραιους όπως η εκφώνηση).