Σελίδα 4 από 17

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Δευτ, 06 Ιούλ 2009 12:56 am
από vasilisgr7
Παιδιά παίζει κανείς να ανεβάσει εδώ τις φετινές ασκήσεις του Γιαννόπουλου που έκανε στην τάξη?(δεν εννοώ αυτές που βρίσκονται στο mycourses) μήπως κ μπούμε στο κλίμα των θεμάτων που θα πέσουν φέτος...

Βοηθείστε αν μπορείτε έναν συνάδελφο(πολύ μεγαλύτερου έτους) σχετικά ανεπίδεκτο προγραμματισμού!!! ;)

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Δευτ, 06 Ιούλ 2009 8:34 pm
από morisson
intelx86 έγραψε:Το INT κάνει τους αριθμούς ακέραιους (Integer=ακέραιος).
To REAL κάνει τους αριθμούς πραγματικούς (Real=πραγματικός).
To FLOAT κάνει ΜΟΝΟ τους ακέραιους (integer) πραγματικούς. Αν του δώσετε μη ακέραιο όρισμα θα βγάλει λάθος.
και κατι ακομα να ρωτησω.Αν πεταξεις ακεραια τιμή σε πραγματική μεταβλητή τοτε η τιμή γίνεται αυτόματα πραγματική?
Και επισης το αντίστροφο,αν πεταξεις πραγματική τιμή σε ακέραια μεταβλητή γινεται ακέραια?

και τέλος αν είναι ετσι τις δύο αυτές(συναρτήσεις πρέπει να είναι... :angel: )τις χρησιμοποιούμε για διευκόλυνση για να μην πήζουμε το πρόγραμμα μεταβλητές?

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Δευτ, 06 Ιούλ 2009 10:45 pm
από intelx86
Μπορείς βεβαίως να εκχωρήσεις σε μία I (Άι) μεταβλητή ένα πραγματικό αριθμό, και ο τελευταίος να γίνει ακέραιος. Η Fortran το δέχεται, ο Πλούτο never. Αλλιώς τι σας έμαθε τις συναρτήσεις; Για να τις εξετάσει φυσικά.

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Δευτ, 06 Ιούλ 2009 11:36 pm
από morisson
intelx86 έγραψε:Μπορείς βεβαίως να εκχωρήσεις σε μία I (Άι) μεταβλητή ένα πραγματικό αριθμό, και ο τελευταίος να γίνει ακέραιος. Η Fortran το δέχεται, ο Πλούτο never. Αλλιώς τι σας έμαθε τις συναρτήσεις; Για να τις εξετάσει φυσικά.
Τhanks admin.Δίκιο έχεις...Απλώς επειδή δεν θυμάμαι να χρησιμοποίησε την int.Να σου πω.Για το αντίστροφο δεν μου είπες... ;) (το float το έχει πεί και το χρησιμοποίησε σε πράξεις).

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Τρί, 07 Ιούλ 2009 1:31 am
από intelx86
Και το αντίστροφο ισχύει. Αν δε χρησιμοποίησε την INT, νομίζω ότι ούτε σε μας τη δίδαξε, αναγκαστικά θα παίξεις με τις μεταβλητές.

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Τρί, 07 Ιούλ 2009 5:33 pm
από akrovolistos
Το πρώτο πρόγραμμα από τα θέματα 20.09.2006
Τρέχει κιόλας, οπότε μάλλον είναι σωστό. Δεκτές παρεμβάσεις.

Κώδικας: Επιλογή όλων

      PROGRAM MYFIRST
        
C     DIAVASMA ARITHMWN
      READ(*,2000) N, M
2000  FORMAT (I4,1X,I4)

C     ELEGXOS AN DEN YPARXEI I DIAIRESI N/M
      IF (M.EQ.0) GO TO 500
      
C     VRISKW TA PSIFIA TOU N
      ITHOU1 = N/1000
      FHUND1 = N-ITHOU1*1000
      IHUND1 = FHUND1/100
      FDECA1 = FHUND1-IHUND1*100
      IDECA1 = FDECA1/10
      FMONA1 = FDECA1-IDECA1*10
      IMONA1 = FMONA1
      
C     VRISKW TA PSIFIA TOU M
      ITHOU2 = M/1000
      FHUND2 = M-ITHOU2*1000
      IHUND2 = FHUND2/100
      FDECA2 = FHUND2-IHUND2*100
      IDECA2 = FDECA2/10
      FMONA2 = FDECA2-IDECA2*10
      IMONA2 = FMONA2
      
C     ELEGXOS AN I DIAIRESI N1/M1 DEN YFISTATAI
      ITEMP = IHUND2+IDECA2+IMONA2
      IF ((ITHOU2.EQ.4).AND.(ITEMP.EQ.0)) GO TO 500
      
C     ELEGXOS ALLAGHS PSIFIOU TOU N
      IF (ITHOU1.LE.3) GO TO 110
      IF (ITHOU1.EQ.4) GO TO 120
      IF (ITHOU1.GE.5) GO TO 130

110   ITHOU1=2*ITHOU1+2
      GO TO 200
120   ITHOU1=0
      GO TO 200
130   ITHOU1=-9+2*ITHOU1

C     ELEGXOS ALLAGHS PSIFIOU TOU M
200   IF (ITHOU2.LE.3) GO TO 210
      IF (ITHOU2.EQ.4) GO TO 220
      IF (ITHOU2.GE.5) GO TO 230

210   ITHOU2=2*ITHOU2+2
      GO TO 300
220   ITHOU2=0
      GO TO 300
230   ITHOU2=-9+2*ITHOU2

C     YPOLOGISMOS TWN N1,M1
300   N1=ITHOU1*1000+IHUND1*100+IDECA1*10+IMONA1
      M1=ITHOU2*1000+IHUND2*100+IDECA2*10+IMONA2
      WRITE(*,*) N1,M1

C     DIAIRESI KAI EKTYPWSI
      DIV1=FLOAT(N)/FLOAT(M)
      DIV2=FLOAT(N1)/FLOAT(M1)
      WRITE(*,1000) DIV1, DIV2
1000  FORMAT (F8.4,2X,F8.4)
        
500   STOP
      END

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Τρί, 07 Ιούλ 2009 9:17 pm
από akis
Θα ηθελα να κανω μια εξειδικευμενη ερωτηση οποιος γνωριζει ας απαντησει...
Εχουμε την εντολη
READ (5,1000) A,B,C,D,E,F,G,H
και 2 FORMAT
1000 FORMAT (F8.3,3(F8.3))
και
1000 FORMAT (F8.3, (3F8.3))
Ο Γιαννοπουλος λεει στο βιβλιο του (σελ.83 για την ακριβεια) οτι και με τους δυο τροπους θα εχουμε τον ιδιο τροπο διαβασματος δλδ
1η γραμμη: A,B,C,D
2η γραμμη: E,F,G
3η γραμμη: H
Καταλαβαινω γιατι διαβαζονται ετσι στη δευτερη FORMAT ομως δεν μπορω να πω το ιδιο και για την πρωτη... Ξερω ειναι λεπτομερεια η ερωτηση αλλα με το Γιαννοπουλο ποτε δεν ξερεις!!! Οποιος μπορει ας βοηθησει...

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Τρί, 07 Ιούλ 2009 11:11 pm
από Theodore
Καλησπέρα!

Η απάντηση είναι ότι, όταν το πλήθος των δεδομένων που έχει να διαβάσει ο Η/Υ από το αρχείο εισόδου είναι μεγαλύτερο από το πλήθος που προβλέπεται από την αρμόδια εντολή FORMAT, τότε, για τα επιπλέον δεδομένα χρησιμοποιεί τον τελευταίο τύπο ανάγνωσης δεδομένων που ορίζεται στην FORMAT. Συγκεκριμένα:

-Στην πρώτη περίπτωση εντολής FORMAT, χρησιμοποιεί τον τύπο " 3(F8.3) ".
-Στην δεύτερη περίπτωση εντολής FORMAT, χρησιμοποιεί τον τύπο " (3F8.3) ".

Η κεντρική ιδέα είναι ότι, μόλις εξαντληθούν οι πρώτοι τέσσερις (δηλαδή οι πρώτοι 1+3) αριθμοί (ήτοι A,B,C,D) όπου αναμένονται να είναι γραμμένοι στην πρώτη σειρά του αρχείου εισόδου (όπως ορίζεται στην αρμόδια FORMAT), χρησιμοποιεί τον τελευταίο τύπο ανάγνωσης που προδιαγράφει η εν λόγω εντολή FORMAT, προκειμένου να διαβάσει και τους υπόλοιπους (E,F,G,H). Επομένως, αλλάζει σειρά ανάγνωσης, και περιμένει να διαβάσει 3 αριθμούς μαζεμένους στην ίδια σειρά (E,F,G), και στις δύο περιπτώσεις. Επειδή όμως υπολείπεται η ανάγνωση ενός ακόμη αριθμού (δηλαδή του H), θα αλλάξει εκ νέου σειρά, ώστε να διαβάσει και τον τελευταίο. Συνεπώς, το αρχείο εισόδου πρέπει να έχει την ακόλουθη (ενδεικτική) μορφή:

Κώδικας: Επιλογή όλων

100.000 200.000 300.000 400.000
500.000 600.000 800.000
900.000
Τέλος, παραθέτω το ακόλουθο προγραμματάκι που έγραψα ώστε να με βοηθήσει κι εμένα να ξανα-θυμηθώ την απάντηση σ' αυτό το παλιό και (ολίγον) αξιο-περίεργο ερώτημα:

Κώδικας: Επιλογή όλων

      PROGRAM TEST
      IMPLICIT REAL*8 (A-H,O-Z)
C
      OPEN (UNIT=5,FILE='INPUT.TXT',STATUS='OLD')
C
      READ (5,1000,ERR=1,END=2) A,B,C,D,E,F,G,H
C1000 FORMAT (F8.3,3(F8.3))
 1000  FORMAT (F8.3, (3F8.3))
C
      OPEN (UNIT=6,FILE='OUTPUT.TXT')
C
      WRITE(6,2000) A,B,C,D,E,F,G,H
 2000  FORMAT ((F8.3,2X))
C
      CLOSE (UNIT=5)
      CLOSE (UNIT=6)
C
      GO TO 4
    1 WRITE (*,'("ERROR IN THE INPUT FILE`S DATA")')
      GO TO 3
    2 WRITE (*,'("UNEXPECTED END OF INPUT FILE DURING READ")')
      GO TO 3
C
    3 PAUSE
C
    4 STOP
      END PROGRAM TEST
Με εκτίμηση,
Θοδωρής._

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Τρί, 07 Ιούλ 2009 11:22 pm
από aleka
Τωρα καταλαβα γιατι ολοι ελεγαν οτι η fortran δεν περνιεται...Αποφασισα να την διαβασω τελικα αλλα εχω ενα βασικο προβλημα: σε καμια λυμενη ασκηση δεν υπαρχει "δηλωση των μεταβλητων"(αυτο που καναμε στην γ΄λυκειου) μονο τους πινακες δηλωνει...??? Ειναι λογικο αυτο, τρεχει κανονικα το προγραμμα?? Ααααα και κατι αλλο,γνωριζει κανεις ποια ειναι τα αντιστοιχα του div και mod στην fortan(αν υπαρχουν)????

Re: Προγραμματισμός Η/Υ (2008-09)

Δημοσιεύτηκε: Τρί, 07 Ιούλ 2009 11:28 pm
από ingenieurin26
Εφόσον είσαι από τεχνολογική κακώς σου έλεγαν ότι δεν περνιέται, ο καθένας ότι θέλει λέει :P

1) δεν γίνεται δήλωση μεταβλητών και
2) Τα div και mod δεν υπάρχουν στην fortran