Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

104
Αυτό σημαίνει ότι το αρχείο σου δεν υπάρχει ή είναι κενό. Τσέκαρε:
1. αν υπάρχει στον ίδιο φάκελο με τον κώδικά σου
2. αν έχει τιμές
3. αν έχεις γράψει το σωστό όνομα αρχείου στην open (μαζί με την κατάληξη)
4. μήπως έχει δημιουργηθεί κάποιο νέο αρχείο με παραπλήσιο όνομα; Αυτό μπορεί να σημαίνει ότι κάτι δεν έκανες καλά με το όνομα αρχείου.

Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

106
Το write κάνει ό,τι και το print, απλώς μπορεί να γράψει και σε αρχείο αντί για την οθόνη.
Με την εντολή open αντιστοιχίζεις ένα αρχείο σε έναν αριθμό ή "ταυτότητα" αν θες ώστε να μπορείς να αναφέρεσαι σε αυτό μέσω μιας write ή read. Το myfile μπορεί να είναι ένα οποιοδήποτε αρχείο κειμένου. Αν του βάλεις και κατάληξη (π.χ. myfile.txt) τότε θα μπορείς να το ανοίξεις αυτόματα με το notepad και να δεις τι περιέχει. Περισσότερα εδώ και εδώ.

Επίσης, επειδή πολλοί το ρωτάτε, υπενθυμίζω ότι μπορείτε να ανατρέχετε και στο βιβλίο που έχετε πάρει για το μάθημα (π.χ. του Καραμπετάκη). Από τα περιεχόμενα ή από το ευρετήριο στο τέλος βρίσκετε την εντολή που θέλετε και βλέπετε σε ποια σελίδα την εξηγεί. Θα συνοδεύεται και από κάποιο παράδειγμα πιθανότατα.

Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

108
Απλό ρε συ...

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

Do i=1,N
read (1,*) A(i), B(i)
enddo
Αυτό απαιτεί οι στήλες σου να είναι χωρισμένες με κενό, κόμμα (",") ή άνω τελεία (";") (το δέχεται τελικά).

Αν τώρα έχεις κάποιο διαχωριστικό, όπως "|", μπορείς να κάνεις διάφορα ακροβατικά, όπως να διαβάζεις τον χαρακτήρα του διαχωριστικού σε μια μεταβλητή τύπου character. Π.χ.:
Spoiler: show

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

program test

implicit none
real :: A(3), B(3)
integer i
character sep

open(unit=1,file="test.txt")

Do i=1,3
    read(1,*) A(i),sep, B(i)
enddo

Do i=1,3
    write(*,*) A(i), B(i)
enddo

end
για να διαβάσει το εξής αρχείο:

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

1.0 | 2.0
3.0 | 4.0
5.0 | 6.0
Πρέπει να γίνεται και πιο σωστά αλλά αυτή τη στιγμή δε μου έρχεται κάτι.
cron