Bonjour,
J'ai des fichiers , exemple: maps000001, maps000002:
maps000001:
maps000002
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 0.0000000E+00 0.9000000E+02 -0.3228331E+5 0.0000000E+00 0.8800000E+02 -0.1468246E-14 0.0000000E+00 0.8600000E+02 0.1261635E-12 0.0000000E+00 0.8400000E+02 0.3256342E-14 0.0000000E+00 0.8200000E+02 0.3353514E-15 0.0000000E+00 0.8000000E+02 0.1879126E-1 0.0000000E+00 0.7800000E+02 0.2759277E+15 0.0000000E+00 0.7600000E+02 -0.2333509E-13 0.0000000E+00 0.7400000E+02 0.2687527E-15 0.0000000E+00 0.7200000E+02 0.5729601E-15
J'ai calcule des valeurs maximum du troisieme colum des fichier maps. J'arrive a imprime sur l'ecran.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 0.0000000E+00 0.9000000E+02 -0.3228331E+1 0.0000000E+00 0.8800000E+02 -0.1468246E-12 0.0000000E+00 0.8600000E+02 0.1261635E-5 0.0000000E+00 0.8400000E+02 0.3256342E+2 0.0000000E+00 0.8200000E+02 0.3353514E-15 0.0000000E+00 0.8000000E+02 0.1879126E-1 0.0000000E+00 0.7800000E+02 0.2759277E-15 0.0000000E+00 0.7600000E+02 -0.2333509E-13 0.0000000E+00 0.7400000E+02 0.2687527E-15 0.0000000E+00 0.7200000E+02 0.5729601E-15
Je voudrai ecrire dans un fichier maps_max comme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 maximum du fichier1: 0.0000000E+00 0.9000000E+02 -0.3228331E+5 maximum du fichier 2 : 0.0000000E+00 0.8400000E+02 0.3256342E+2
Mais les resultats (de mon conde) sont ecrit seulement la valeurs maximum de dernier fichier (c'est a dire fichier maps000002, n = nmax).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 maps_max: 1 0.0000000E+00 0.9000000E+02 -0.3228331E+5 2 0.0000000E+00 0.8400000E+02 0.3256342E+2
Voici le code j'ai ecrit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 maps_max: 2 0.0000000E+00 0.8400000E+02 0.3256342E+2
Est-ce qu'il y a quelqu'un qui connait ou a autre solution a resoudre ce probleme
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 program maxxi_map implicit none ! Declaration character(len=4) :: map="maps" character(len=9) :: some_maps character(len=2) :: nd character(len=6) :: nf character(len=2) :: Fa="a_" character(len=9) :: map_sorti="map_stack" character(len=8) :: maps_max integer :: i,j,k,nmax,ncol,nlign, n, m,ll real, allocatable :: l1(:),l2(:),l3(:), l4(:),latn(:),longn(:) real :: tr,maxxi,lat,long print*,"enter value of maps nmax" read*,nmax ! arrays' size with the first file nlign = 0 ! open(10,file="maps000001",status="old",action="read") do read(10,*,end=40) tr,tr,tr nlign = nlign+1 end do 40 close(10) write(*,*) nlign," lines read" ! allocations allocate(l1(nlign),l2(nlign),l3(nlign),l4(nlign)) !! boucle do n=1,nmax write(nf,"(i6.6)")n open(10, file="maps"//nf,status="old",action="read") do j = 1,nlign read(10,*) l1(j),l2(j),l3(j) l4(j) = abs (l3(j)) end do maxxi = l4(1) do i=1,nlign if ( l4(i) .gt. maxxi) then maxxi = l4(i) lat = l1(i) long = l2(i) else maxxi = maxxi lat = l1(i) long = l2(i) endif enddo do k = 1,nlign if ( l4(k) .eq. maxxi) then lat = l1(k) long = l2(k) endif enddo print*,'maximum of maps number ',n,lat,long,maxxi open(20,file="maps_max",action="write",status="replace") write(20,"(i2.2,1x,e14.7,1x,e14.7,1xe14.7)"),n,lat,long,maxxi close(10) close(20) end do ! Deallocations deallocate(l1,l2,l3,l4) end program maxxi_map
Merci votre aide,
Chip.
Partager