Έγκυρος αριθμός ΑΦΜ

Ένας Αριθμός Φορολογικού Μητρώου (ΑΦΜ) θεωρείται έγκυρος εάν αυτός πληρεί ορισμένες προϋποθέσεις. Έστω ο ΑΦΜ Α9Α8Α7Α6Α5Α4Α3Α2Α1, όπου ΑΙ το Ι-στό ψηφιο,

  • Βρίσκουμε το άθροισμα της πράξης Σ = Α1*0+Α2*2+Α3*4+Α4*8+Α5*16+Α6*32+Α7*64+Α8*128+Α9*256
  • Υπολογίζουμε το υπόλοιπο Υπ της διαίρεσης του Σ με τον αριθμό 11.
  • Αν το υπόλοιπο Υπ της διαίρεσης είναι 10 τότε το A1 πρέπει να είναι ίσο με 0. Στην αντίθετη περίπτωση, πρέπει το Υ να είναι ίσο με το Α1.

Να γίνει αλγόριθμος ο οποίος θα διαβάζει έναν 9-ψήφιο ακέραιο αριθμό (ο οποίος θα αναπαριστά το ΑΦΜ) και θα ελέγχει αν είναι έγκυρο ή όχι.

Αλγόριθμος Εγκυρότητα_ΑΦΜ
 
Διάβασε αφμ
 
υ <- αφμ 
ψηφίο <- 0
 
Όσο (υ > 0) επανάλαβε 
   ψηφίο <- ψηφίο + 1 
   ψηφια_αφμ[ψηφίο] <- υ mod 10 
   υ <- υ div 10 
Τέλος_επανάληψης
 
Αν ψηφίο <> 9 τότε 
   Εμφάνισε 'ΑΦΜ, μη έγκυρο' 
Αλλιώς 
   πολλαπλασιαστής <- 2 
   Σ <- 0
   Για ι από 2 μέχρι 9
      Σ <- Σ + ψηφία_αφμ[ι] * πολλαπλασιαστής 
      πολλαπλασιαστής <- πολλαπλασιαστής * 2
   Τέλος_επανάληψης
 
   Υπ <- Σ mod 11
 
   Αν ((Υπ = 10 και ψηφία_αφμ[1] = 0) Η ψηφία_αφμ[1] = Υπ) τότε 
      Εμφάνισε 'ΑΦΜ έγκυρο' 
   Αλλιώς 
      Εμφάνισε 'ΑΦΜ, μη έγκυρο' 
   Τέλος_αν
 
Τέλος_αν
 
Τέλος Εγκυρότητα_ΑΦΜ

3 σχόλια για το άρθρο “Έγκυρος αριθμός ΑΦΜ

  • 25/03/2012 at 23:12
    Permalink

    ΣΤΗΝ 8 ΓΡΑΜΜΗ ΛΕΕΙ ΕΠΑΝ-Ε-ΛΑΒΕ ΚΑΙ ΟΧΙ ΕΠΑΝ-Α-ΛΑΒΕ….

  • 26/03/2012 at 09:22
    Permalink

    @Lef
    Γεια σου, ευχαριστώ για την παρατήρηση. Θα το διορθώσω.

  • 21/12/2016 at 12:39
    Permalink

    Καλημέρα,
    Αρχικά θα ήθελα να σε ευχαριστήσω για τις ποιοτικές ασκήσεις που παρουσιάζεις στη σελίδα σου!!
    πέρασα τον αλγόριθμό σου σε ΓΛΩΣΣΑ και αντιμετώπισα ένα «προβληματάκι» που έχει να κάνει με τον αριθμό των ψηφίων του ΑΦΜ. Για τους νεότερους που ο ΑΦΜ ξεκινά με αριθμό διαφορετικό του 0 δουλεύει σωστά, αλλά όταν ο ΑΦΜ αρχίζει με 0, καλή ώρα, τερματίζει νωρίτερα την επανάληψη με το ψηφίο να είναι πάντα 9 όπου και στη συνέχεια ελέγχοντας βρίσκει λάθος όποια ΑΦΜ ξεκινούν με 0.
    Μια λύση που έδωσα είναι η παρακάτω:
    ΠΡΟΓΡΑΜΜΑ ΕΛΓΧΟΣ_ΑΦΜ
    ΜΕΤΑΒΛΗΤΕΣ
    ΑΚΕΡΑΙΕΣ: ΑΦΜ[9], Υ, ΘΨ, ΥΑΦΜ, ΠΟΛ, Σ, Ι, ΥΠ

    ΑΡΧΗ
    ΓΡΑΨΕ ‘ΔΩΣΕ ΤΟΝ ΥΠΟΨΗΦΙΟ Αριθμό Φορολογικού Μητρώου:’
    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    ΔΙΑΒΑΣΕ ΥΑΦΜ
    ΜΕΧΡΙΣ_ΟΤΟΥ ΥΑΦΜ > 0 ΚΑΙ ΥΑΦΜ <= 999999999
    Υ <- ΥΑΦΜ
    ΘΨ <- 0
    ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 9
    ΑΦΜ[Ι] 0 ΕΠΑΝΑΛΑΒΕ
    ΘΨ <- ΘΨ + 1
    ΑΦΜ[ΘΨ] <- Υ mod 10
    Υ <- Υ div 10
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    ΠΟΛ <- 2
    Σ <- 0
    ΓΙΑ Ι ΑΠΟ 2 ΜΕΧΡΙ 9
    Σ <- Σ + ΑΦΜ[Ι]* ΠΟΛ
    ΠΟΛ <- ΠΟΛ*2
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΥΠ <- Σ mod 11
    ΑΝ ((ΥΠ = 10 ΚΑΙ ΑΦΜ[1] = 0) Η ΑΦΜ[1] = ΥΠ) ΤΟΤΕ
    ΓΡΑΨΕ 'Το ΑΦΜ: ', ΥΑΦΜ, ' είναι έγκυρο'
    ΑΛΛΙΩΣ
    ΓΡΑΨΕ 'Το ΑΦΜ: ', ΥΑΦΜ, ' δεν είναι έγκυρο'
    ΤΕΛΟΣ_ΑΝ

    ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

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

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