Problem mit Ausgabedatei < Fortran < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:57 Mi 30.06.2010 | Autor: | Tyskie84 |
Hallo,
ich habe eben ein Programm geschrieben zum Einlesen von Daten. Fortran tuts bis auf einen Schönheitsfehler. Kann mir da jmd helfen?
Datei sieht wie folgt aus:
023370 99999 20100320 38.2 23 29.4 23 9999.9 0 9999.9 0 999.9 0 1.7 23 7.8 999.9 50.0* 26.8* 99.99 999.9 010000
025180 99999 19730101 33.3 8 29.8 8 1027.3 8 9999.9 0 9.0 8 14.2 8 34.0 999.9 35.6 32.0* 0.00F 999.9 000000
025180 99999 19730102 35.8 8 33.6 8 1025.0 8 9999.9 0 6.0 8 15.7 8 20.0 999.9 39.2 32.0 0.00F 999.9 010000
025180 99999 19730103 39.4 8 37.6 8 1022.8 8 9999.9 0 11.9 8 13.7 8 22.0 999.9 41.0 37.4* 0.04E 999.9 010000
025180 99999 19730104 37.7 7 35.9 7 1029.4 7 9999.9 0 15.5 6 9.9 7 15.9 999.9 41.0 35.6* 0.00E 999.9 100000
Fortranprogram
PROGRAM READ_IN
IMPLICIT NONE
INTEGER i,M
PARAMETER (M=11917)
INTEGER stn(M)
INTEGER wban(M)
INTEGER date(M)
INTEGER counta(M)
INTEGER countb(M)
INTEGER countc(M)
INTEGER countd(M)
INTEGER counte(M)
INTEGER countf(M)
REAL temp(M)
REAL dewp(M)
REAL slp(M)
REAL stp(M)
REAL visib(M)
REAL wdsp(M)
REAL mxspd(M)
REAL gust(M)
CHARACTER*7 maxi(M)
CHARACTER*7 mini(M)
CHARACTER*6 prcp(M)
REAL sndp(M)
INTEGER frshtt(M)
OPEN(10,FILE="/home/*******/Desktop/025180.txt")
DO i=1,M
READ(10,'(I6,1X,I5,2X,I8,3X,F5.1,1X,I2,2X,F6.1,1X,I2,2X,F6.1,1X,I2,2X,F6.1,1X,I2,2X,F5.1,1X,I2,2X,F5.1,1X,I2,2X,F5.1,2X,F5.1,2X,A7,1X,A7,1X,A6,1X,F5.1,2X,I6)') stn(i),wban(i),date(i),temp(i),counta(i),dewp(i),countb(i),slp(i),countc(i),stp(i),countd(i),visib(i),counte(i),wdsp(i),countf(i),mxspd(i),gust(i),maxi(i),mini(i),prcp(i),sndp(i),frshtt(i)
ENDDO
PRINT*, stn(1),wban(1),date(1),temp(1),counta(1),dewp(1),countb(1),slp(1),countc(1),stp(1),countd(1),visib(1),counte(1),wdsp(1),countf(1),mxspd(1),gust(1),maxi(1),mini(1),prcp(1),sndp(1),frshtt(i)
OPEN(20,FILE="/home/******/Desktop/test.txt")
DO i=1,M
WRITE(20,'(I6,1X,I5,2X,I8,3X,F5.1,1X,I2,2X,F6.1,1X,I2,2X,F6.1,1X,I2,2X,F6.1,1X,I2,2X,F5.1,1X,I2,2X,F5.1,1X,I2,2X,F5.1,2X,F5.1,2X,A7,1X,A7,1X,A6,1X,F5.1,2X,I6)') stn(i),wban(i),date(i),temp(i),counta(i),dewp(i),countb(i),slp(i),countc(i),stp(i),countd(i),visib(i),counte(i),wdsp(i),countf(i),mxspd(i),gust(i),maxi(i),mini(i),prcp(i),sndp(i),frshtt(i)
ENDDO
CLOSE(20)
CLOSE(10)
END
Ausgabedatei
23370 99999 20100320 38.2 23 29.4 23 9999.9 0 9999.9 0 999.9 0 1.7 23 7.8 999.9 50.0* 26.8* 99.99 999.9 10000
25180 99999 19730101 33.3 8 29.8 8 1027.3 8 9999.9 0 9.0 8 14.2 8 34.0 999.9 35.6 32.0* 0.00F 999.9 0
25180 99999 19730102 35.8 8 33.6 8 1025.0 8 9999.9 0 6.0 8 15.7 8 20.0 999.9 39.2 32.0 0.00F 999.9 10000
25180 99999 19730103 39.4 8 37.6 8 1022.8 8 9999.9 0 11.9 8 13.7 8 22.0 999.9 41.0 37.4* 0.04E 999.9 10000
25180 99999 19730104 37.7 7 35.9 7 1029.4 7 9999.9 0 15.5 6 9.9 7 15.9 999.9 41.0 35.6* 0.00E 999.9 100000
Es fehlt die "0" vor 25180 usw. Das Ende der Augabedatei stimmt auch nicht ganz. Woran kann das liegen?
Gruß
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 21:49 Mi 30.06.2010 | Autor: | Tyskie84 |
Hallo Rainer,
danke für den Link! Ich habe mir diesen Abschnitt durchgelesen doch leider weiß ich nich so recht wie ich das umsetzen soll. Liegt der Fehler jetzt bei der Auführung des Programms oder im Programm selbst. Und wenn ja was genau muss ich da ändern?
Gruß
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 07:53 Do 01.07.2010 | Autor: | rainerS |
Hallo!
> danke für den Link! Ich habe mir diesen Abschnitt
> durchgelesen doch leider weiß ich nich so recht wie ich
> das umsetzen soll. Liegt der Fehler jetzt bei der
> Auführung des Programms oder im Programm selbst. Und wenn
> ja was genau muss ich da ändern?
Die Frage ist eher: was soll dein Programm machen? Du liest ganze Zahlen ein und gibst sie wieder aus. Dabei werden ie führenden Nullen weggelassen, aber die machen bei Zahlen nunmal keinen Unterscheid im Wert.
Ich vermute eher, dass es nicht wirklich Zahlen sind, sondern Strings, die nur aus Ziffern bestehen. Dann solltest du sie auch mit A und nicht mit I einlesen und ausgeben.
Viele Grüße
Rainer
|
|
|
|