Τώρα είναι Παρ 29 Μαρ 2024 02:05 am

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 3 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
 Θέμα δημοσίευσης: Ακέραιο Μέρος χωρίς Α_Μ()
ΔημοσίευσηΔημοσιεύτηκε: Τρί 02 Σεπ 2008 01:55 pm 
Χωρίς σύνδεση

Εγγραφή: Τρί 22 Ιούλ 2008 01:59 pm
Δημοσιεύσεις: 3
Υπολογισμός λοιπόν του ακέραιο μέρους ενός πραγματικού χωρίς την χρήση της εντολής Α_Μ()
Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΑΚΕΡΑΙΟ_ΜΕΡΟΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:Ι
  ΠΡΑΓΜΑΤΙΚΕΣ:Α
  ΛΟΓΙΚΕΣ: Β
ΑΡΧΗ
  ΔΙΑΒΑΣΕ Α
  ΑΝ Α<0 ΤΟΤΕ
    Α <-- -Α
    Β <-- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
  Ι <-- 0
  ΟΣΟ (Α-Ι>1) ΕΠΑΝΑΛΑΒΕ
    Ι <-- Ι+1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ Β = ΑΛΗΘΗΣ ΤΟΤΕ
    Ι <-- -Ι
  ΤΕΛΟΣ_ΑΝ

  ΓΡΑΨΕ 'ΑΚΕΡΑΙΟ ΜΕΡΟΣ',Α,' :'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΑΚΕΡΑΙΟ_ΜΕΡΟΣ

όμως είναι αργό
έχετε να μου προτείνεται κάτι πιο γρήγορο?


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: Ακέραιο Μέρος χωρίς Α_Μ()
ΔημοσίευσηΔημοσιεύτηκε: Τετ 03 Σεπ 2008 01:06 am 
Χωρίς σύνδεση

Εγγραφή: Παρ 30 Μάιος 2008 09:46 pm
Δημοσιεύσεις: 49
Έχω να προτείνω κάτι πιο γρήγορο για μεγαλύτερους αριθμούς αλλά πρώτα θα ήθελα να πω 3 αλλαγές που πιστεύω ότι πρέπει να κάνεις ώστε να δουλεύει πιο σωστά το παραπάνω.
1) Νομίζω ότι πρέπει μετά το αρχή να δηλώνεις την μεταβλητή Β ως ψευδής ( Β <-- ψευδής ) γιατί εάν δοθεί θετικός αριθμός τότε στην γραμμή 16 λέει ότι η μεταβλητή Β είναι Μη-αρχικοποιημένη.
2) Επίσης στην γραμμή 13
Syntax: [ Download ] [ Hide ]
ΟΣΟ (Α-Ι>1) ΕΠΑΝΑΛΑΒΕ
πρέπει να γίνει
Syntax: [ Download ] [ Hide ]
ΟΣΟ (Α-Ι>=1) ΕΠΑΝΑΛΑΒΕ
γιατί εάν δοθεί ακέραιος αριθμός ως Α τότε στο τέλος δίνει ότι το ακέραιο μέρος είναι ο αριθμός που δώσαμε -1 π.χ. αν δώσουμε 1 για Α τότε στο τέλος θα μας γράψει: ΑΚΕΡΑΙΟ ΜΕΡΟΣ 1 : 0
3) Τέλος καλό θα ήταν καλό να προστεθεί μετά την γραμμή 17
Syntax: [ Download ] [ Hide ]
Ι <-- -Ι
η γραμμή :
Syntax: [ Download ] [ Hide ]
Α<-- -Α
ώστε όταν δίνουμε αρνητικό αριθμό να μην λέει π.χ. ΑΚΕΡΑΙΟ ΜΕΡΟΣ 3 : -3 όταν δίνουμε -3.

Δηλαδή να γίνει έτσι:
(οι γραμμές που έχουν αλλάξει είναι αυτές με το ! δίπλα)
Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΑΚΕΡΑΙΟ_ΜΕΡΟΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:Ι
  ΠΡΑΓΜΑΤΙΚΕΣ:Α
  ΛΟΓΙΚΕΣ: Β
ΑΡΧΗ
  Β <-- ΨΕΥΔΗΣ                 !
  ΔΙΑΒΑΣΕ Α
  ΑΝ Α<0 ΤΟΤΕ
    Α <-- -Α
    Β <-- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
  Ι <-- 0
  ΟΣΟ (Α-Ι>=1) ΕΠΑΝΑΛΑΒΕ       !
    Ι <-- Ι+1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ Β = ΑΛΗΘΗΣ ΤΟΤΕ
    Ι <-- -Ι
    Α <-- -Α                   !
  ΤΕΛΟΣ_ΑΝ

  ΓΡΑΨΕ 'ΑΚΕΡΑΙΟ ΜΕΡΟΣ',Α,' :'
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ ΑΚΕΡΑΙΟ_ΜΕΡΟΣ


Όσο για κάποιο πιο γρήγορο τρόπο έχω να προτείνω το παρακάτω. Νομίζω ότι είναι πιο γρήγορο για μεγάλους αριθμούς (ή πολύ μικρούς όταν αυτοί είναι αρνητικοί). Κάθε σχόλιο και διόρθωση ευπρόσδεκτη.

Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΑΚΕΡΑΙΟ_ΜΕΡΟΣ
ΜΕΤΑΒΛΗΤΕΣ
  ΠΡΑΓΜΑΤΙΚΕΣ: Α
  ΑΚΕΡΑΙΕΣ: Ι1, Ι2, Τ
  ΛΟΓΙΚΕΣ: Β
ΑΡΧΗ
  ΔΙΑΒΑΣΕ Α
  Β <-- ΨΕΥΔΗΣ
  ΑΝ Α<0 ΤΟΤΕ
    Α <-- -Α
    Β <-- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
  Ι1 <-- 0
  Ι2 <-- 1
  Τ <-- 1
  ΟΣΟ ΟΧΙ(Ι1=Ι2-1 ΚΑΙ Ι1 <= Α ΚΑΙ Ι2 > Α) ΕΠΑΝΑΛΑΒΕ
    ΑΝ Ι2<Α ΤΟΤΕ
      Ι1 <-- Ι2
      ΑΝ Τ < Α ΤΟΤΕ
        Ι2 <-- Ι2*2
      ΑΛΛΙΩΣ
        Ι2 <-- Τ
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΑΝ
    ΑΝ Ι2>Α ΚΑΙ Ι2<>Ι1+1 ΤΟΤΕ
      Τ <-- Ι2
      Ι2 <-- Ι1 +(( Ι2-Ι1)  DIV  2)
    ΤΕΛΟΣ_ΑΝ
    ΑΝ Ι2=Α ΤΟΤΕ
      Ι1 <-- Ι2
      Ι2 <-- Ι2 +1
    ΤΕΛΟΣ_ΑΝ
    ΑΝ Α=Ι1 ΤΟΤΕ
      Ι2 <-- Ι1 + 1
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ Β = ΑΛΗΘΗΣ ΤΟΤΕ
    Ι1 <-- -Ι1
    Α <-- -Α
  ΤΕΛΟΣ_ΑΝ
  ΓΡΑΨΕ 'ΑΚΕΡΑΙΟ ΜΕΡΟΣ',Α,' :',Ι1
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

_________________
"Δύο πράγματα είναι ατελείωτα (άπειρα), το σύμπαν και η ανθρώπινη βλακεία, για το 1ο δεν είμαι σίγουρος." Einstein
"Τα πάντα ρει" (Τα πάντα ρέουν/αλλάζουν) Ηράκλειτος
"Μη μου τους κύκλους τάραττε" Αρχιμήδης


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
 Θέμα δημοσίευσης: Re: Ακέραιο Μέρος χωρίς Α_Μ()
ΔημοσίευσηΔημοσιεύτηκε: Παρ 30 Ιαν 2009 08:52 pm 
Χωρίς σύνδεση

Εγγραφή: Τρί 22 Ιούλ 2008 01:59 pm
Δημοσιεύσεις: 3
Πολύ καλές οι προτάσεις σου.


Με ομαδική προσπάθεια στο forum http://www.ischool.gr δημιουργήσαμε άλλον ένα αρκετά γρήγορο αλγόριθμο.

Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ ΑΚΕΡΑΙΟΙ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ:ΨΗΦΙΑ,SOL,I,J
  ΠΡΑΓΜΑΤΙΚΕΣ:ΑΡΙΘΜΟΣ, ΤΕΜΡ
  ΛΟΓΙΚΕΣ:Α,Β
ΑΡΧΗ
  ΨΗΦΙΑ <-- 0
  Α <-- ΨΕΥΔΗΣ
  Β <-- ΨΕΥΔΗΣ
  ΔΙΑΒΑΣΕ ΑΡΙΘΜΟΣ
     
  ΑΝ ΑΡΙΘΜΟΣ<0 ΤΟΤΕ
    ΑΡΙΘΜΟΣ <-- -ΑΡΙΘΜΟΣ    ! Για να ελέγχει το πρόσημο
    Β <-- ΑΛΗΘΗΣ
  ΤΕΛΟΣ_ΑΝ
  ΤΕΜΡ <-- ΑΡΙΘΜΟΣ
  ΟΣΟ (ΤΕΜΡ>=1) ΕΠΑΝΑΛΑΒΕ
    ΤΕΜΡ <-- ΤΕΜΡ/10
    ΨΗΦΙΑ <-- ΨΗΦΙΑ+1
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΜΡ <-- ΑΡΙΘΜΟΣ
  SOL <-- 0
  I <-- ΨΗΦΙΑ-1
  ΟΣΟ (I>=0) ΚΑΙ (Α=ΨΕΥΔΗΣ)  ΕΠΑΝΑΛΑΒΕ

    J <-- 0
    ΟΣΟ (J<=9) ΚΑΙ (Α=ΨΕΥΔΗΣ)  ΕΠΑΝΑΛΑΒΕ
      ΤΕΜΡ <-- ΤΕΜΡ-J*10^I
      ΑΝ ΤΕΜΡ<1 ΤΟΤΕ    !  Για να τερματίζει όταν έχει βρει τις μονάδες
        Α <-- ΑΛΗΘΗΣ
      ΤΕΛΟΣ_ΑΝ

      ΑΝ (ΤΕΜΡ<10^I) ΤΟΤΕ
        SOL <-- SOL+J*10^I
        Α <-- ΑΛΗΘΗΣ

      ΤΕΛΟΣ_ΑΝ
      ΑΝ Α=ΨΕΥΔΗΣ  ΤΟΤΕ        !ώστε η τιμή του ΤΕΜΡ να μένει ως έχει όταν έχει βρεθεί το ψηφίο
        ΤΕΜΡ <-- ΤΕΜΡ+J*10^I
        J <-- J+1
      ΤΕΛΟΣ_ΑΝ

    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

    Α <-- ΨΕΥΔΗΣ
    I <-- I-1

  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΑΝ Β=ΑΛΗΘΗΣ ΤΟΤΕ
    SOL <-- -SOL
  ΤΕΛΟΣ_ΑΝ

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


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 3 Δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 6 επισκέπτες


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
cron
Προβολές: