Nowe posty

xx Dystrybucja pod HP Omen (7)
Dzisiaj o 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: [fortran] wczytywanie liczb  (Przeczytany 3884 razy)

Gosik

  • Gość
[fortran] wczytywanie liczb
« dnia: 2012-11-02, 22:39:37 »
Witam!
 Chcialabym wczytac dane z pliku i kolejno wyznaczyc najmniejsza i najwieksza liczbe.

program minmax
implicit none
real, allocatable :: x(:)
real xmin, xmax
integer i,n,nm0

 open (11,file='liczby.dat')
 read(11,*) n
 if (n<1) then
   write (*,*) 'za malo danych'
   stop
 end if


 allocate(x(n))
  close(11)

  do i=1,n
   write(*,*)'liczby',x(i)
  end do

 xmin=x(1)
 xmax=x(1)

 do i=2,n
     if (x(i)>xmax) xmax=x(i)
     if (x(i) end do

write(*,*) 'najmniejsza liczba =',xmin
write(*,*) 'najwieksza liczba =',xmax


deallocate(x)

end program minmax
W pliku liczby.dat mam takie liczby: 0 23 0.1 100
A otrzymuje:
 najmniejsza liczba =   0.0000000    
 najwieksza liczba =  7.00649232E-44

Czy moglabym prosic o wskazanie gdzie mam blad?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3049
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
[fortran] wczytywanie liczb
« Odpowiedź #1 dnia: 2012-11-03, 12:42:08 »
Fortrana widziałem z 20 lat temu ostatni raz, ale:

1. Z programu wynika, że pierwsza dana w pliku to liczba danych do wczytania (parametr n). Twoje dane na pierwszej pozycji mają 0, więc pierwszy błąd.
2. Nie wczytujesz reszty liczb to tablicy.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Gosik

  • Gość
[fortran] wczytywanie liczb
« Odpowiedź #2 dnia: 2012-11-03, 19:40:04 »
Tak, zgadza sie. Dziekuje. Jednakze nie wiem jak to porawic. Nalezy wczytac liczby do momentu konca wiersza.
Dopiero rozpoczynam nauke z tym jezykiem programowania, Jesli ktos sie na tym zna, to bede bardzo wdzieczna za pomoc.

falcoalopex

  • Gość
[fortran] wczytywanie liczb
« Odpowiedź #3 dnia: 2012-11-03, 21:21:25 »
Ja Fortrana widziałem rok temu i też niewiele pamiętam;) i do tego ostatnio używałem F77, a z tego co widzę co najmniej F95.

Spróbuj dopisać po  allocate(x(n)):

 
Cytuj
read(11,*) (x(i), i=1,n)
piszę to bez możliwości sprawdzenia więc nie musi być dobrze...

Co studiujesz, że masz Fortrana?

[Edycja]
Plik musi zawierać liczbę danych do wczytania (Twoje "n")
 
Cytuj
4
0 23 0.1 100