Προς το περιεχόμενο

fortran?


CHRIS_MALL

Προτεινόμενες αναρτήσεις

Δημοσ.

ALLOCATE(A(1:100,1:100))

 

OPEN (UNIT=1,FILE="C:\fortran\Data2.dat",STATUS="OLD")

 

status=0;

LOOP2: DO WHILE(STATUS/=-1)

 

READ(1,*,IOSTAT=STATUS),A

 

END DO LOOP2

 

Afto pou ginete omws einai na mpainou oi times tou arxeiou stis theseis

A(1,1) , A(1,2) , A(1,3) , A(1,4) .... A(1,n)

enw egw thelw na topothetountai oi times stin swsti grammi kai stili pou anoikoun opws sto arxeio..

Mporei na voithisei kaneis?

 

Gnwrizei mipws kaneis an yparxei synartisi antistoixei tou end of line?

Δημοσ.

Δεν θέλω να φανώ προσβλητικός όμως γιατί ρε φίλε ασχολείσαι ακόμα με Φόρτραν; Αν μάθαινες αρχαία Αιγυπτιακά θα σου ήταν πιό χρήσιμη σαν γλώσσα!

Δημοσ.
Δεν θέλω να φανώ προσβλητικός όμως γιατί ρε φίλε ασχολείσαι ακόμα με Φόρτραν; Αν μάθαινες αρχαία Αιγυπτιακά θα σου ήταν πιό χρήσιμη σαν γλώσσα!

 

Symfwnw apolyta file mou ... alla ergasies sto panepisthmio einai aftes...ti na kaneis? :???:

Pantws an mporei kaneis na mou pei an yparxei end-of-line entolh i' mia getline opws yparxoun stis alles glwsses as enhmerwsei!

Δημοσ.

Gnwrizei mipws kaneis an yparxei synartisi antistoixei tou end of line?

Gia EOF h Fortran xrhsimopoiei thn parametro END = label' date=' sthn entolh Read.

 

Gia paradeigma:

 

READ(1,*,End=300),A

 

Auto shmainei oti otan to to arxeio ftasei sto telos tote to programma vgainei apo to Loop kai kanei jump sto label 300.

Δημοσ.
Gia EOF h Fortran xrhsimopoiei thn parametro END = label' date=' sthn entolh Read.

 

Gia paradeigma:

 

READ(1,*,End=300),A

 

Auto shmainei oti otan to to arxeio ftasei sto telos tote to programma vgainei apo to Loop kai kanei jump sto label 300.

File rwtisa gia end-of-line oxi end-of-file kai an gnwrizei kaneis kamia synartisi get line prokeimenou na diavasw enan pinaka pou den gnwrizw tis diastaseis tou apo arxeio.

Efxaristw pantws

Δημοσ.
File rwtisa gia end-of-line oxi end-of-file kai an gnwrizei kaneis kamia synartisi get line prokeimenou na diavasw enan pinaka pou den gnwrizw tis diastaseis tou apo arxeio.

Efxaristw pantws

 

Κοίτα να δείς. Υπάρχουν διάφοροι τρόποι να διαβάσεις ένα αρχείο στο οποίο δε γνωρίζεις τις διαστάσεις του. Αρκεί βέβαια να ξέρεις από πόσες στήλες αποτελείται το αρχείο σου (5-10 στοιχεία ανά γραμμή).

 

Τρόπος 1: Ανοίγεις το αρχείο από την Visual Fortran και βλέπεις όλα τα data. Πας κάτω - κάτω και χτυπάς με το ποντίκη την τελευταία γραμμή. Στο κάτω δεξί μέρος της μπάρας σου λέει Ln (line) πχ 200' date=' Col (column) πχ 80. Έτσι έχεις από πόσες γραμμές αποτελείται το αρχείο σου. Όταν θα πας να το φορτώσεις θα ορίσεις τον πίνακα με τις γραμμές που βρήκες με αυτό το τρόπο.

 

Τρόπος 2: (ελαφρώς πιο μπακαλίστικος) Αν έχεις μια εκτίμηση του πόσες γραμμές έχει το αρχείο σου πχ περίπου 1000 γραμμές από data, αλλά όχι ακριβώς 1000, ορίζεις τον πίνακα να έχει 3000 γραμμές. Κάνεις ένα do - loop στο οποίο θα διαβάζει τις 3000 γραμμές, λέγοντας του στην οθόνη να σου γράφει τον αύξοντα αριθμό της γραμμής. Κάποια στιγμή θα κολλήσει γιατί δε θα έχει άλλα στοιχεία να διαβάσει. Εκεί που κόλλησε, βρήκες και από πόσες γραμμές αποτελείται το αρχείο με τα data.

 

Τρόπος 3: (μέσω του mathematica αν έχεις ακουστά). Του λές να διαβάσει το αρχείο με την ακόλουθη εντολή

 

>[b] a = Partition[Flatten[ReadList["c:\\temp\\data\\file.dat", Number, RecordLists ->True]], 3];
Length[a] [/b]

 

Όπου του λές σε ποιό directory είναι το αρχείο σου, (πχ. C:\\temp\\data\\ προσοχή δύο κάθετες γραμμές), το όνομα το αρχείου (πχ file.dat) και τέλος από πόσες στήλες αποτελείται το αρχείο σου (πχ. 3). Αυτόματα το Length[a'] θα σου πεί πόσες είναι οι γραμμές.

 

Ελπίζω να κατάλαβα τί ακριβώς ζήταγες και να βοήθησα.

 

Αυτά. 8)

Δημοσ.

O parakatw kwdikas souleyei se fortran77 opote ypo8etw 8a douleyei

kai sthn 90.

 

 

>        
       open(unit=1,status='old',file='lala')

       read(1,*,end=100) (tmp,i=1,10000)
100   total = i-1

       rewind(1)

       do i=1,10000
         read(1,*,end=200) tmp
       end do
200   lines=i-1

       columns = total/lines

 

Sto 1o (emeso) loop diavazei ola ta stoixeia tou pinaka

enw sto 2o (ammeso) diavazei enan ari8mo ka8e fora kai meta

allazei grammh. Opote diairwntas to synoliko ari8mo me tis grammes

vriskeis tis sthles.

 

Meta mporeis na diavaseis ton pinaka sou me

>

     rewind(1)
     do i=1,lines
       read(1,*)  (a(i,j), j=1,columns)
     end do

 

Elpizw na voh8hsa

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...