[Fortran] Wyznaczanie najmniejszej i największej liczby

Mat.Monia
Użytkownik
Użytkownik
Posty: 105
Rejestracja: 2 paź 2008, o 19:56
Płeć: Kobieta
Lokalizacja: Bydgoszcz
Podziękował: 7 razy
Pomógł: 2 razy

[Fortran] Wyznaczanie najmniejszej i największej liczby

Post autor: Mat.Monia »

Chcialabym, aby z pliku wczytac liczby do tablicy i wyznaczyc najmniejsza i najwieksza wartosc.

Kod: Zaznacz cały

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))
  do i=1,n
    read(*,*) x(i)
  end do
  close(11)


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

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

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


deallocate(x)

end program minmax
Program sie kompiluje bez bledu, ale przy uruchamianiu zawiesza sie. Czy widzicie gdzie lezy blad?
Ostatnio zmieniony 4 lis 2012, o 20:56 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
olekp
Użytkownik
Użytkownik
Posty: 31
Rejestracja: 8 maja 2012, o 09:14
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy
Pomógł: 2 razy

[Fortran] Wyznaczanie najmniejszej i największej liczby

Post autor: olekp »

Nie wiesza się, czeka na klawisza...
W linii 16 czytaj liczby z pliku numer 11, tak jak w linii 8.
Mat.Monia
Użytkownik
Użytkownik
Posty: 105
Rejestracja: 2 paź 2008, o 19:56
Płeć: Kobieta
Lokalizacja: Bydgoszcz
Podziękował: 7 razy
Pomógł: 2 razy

[Fortran] Wyznaczanie najmniejszej i największej liczby

Post autor: Mat.Monia »

Usunelam linijke od 15 do 17. Jednakze mam plik z nastepujaymi liczbami: 2 100 5 26 1 0.6
a program mi wyrzuca:
najmniejsza liczba = 0.0000000
najwieksza liczba = 7.00649232E-44

Czy moglaby liczyc na jakies wskazowki jak poprawic kod?
olekp
Użytkownik
Użytkownik
Posty: 31
Rejestracja: 8 maja 2012, o 09:14
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 2 razy
Pomógł: 2 razy

[Fortran] Wyznaczanie najmniejszej i największej liczby

Post autor: olekp »

Nie napisałem żeby usuwać linijki od 15 do 17.
Napisałem, żeby zamienić linijkę 16 na read(11,*) x(i).
Poza tym twój plik liczby.dat powinien wyglądać tak:
5
100
5
26
1
0.6


Zaczyna się od 5, a nie od 2, bo pierwsza liczba określa ile liczb ma być wczytanych.
Nie będzie błędu, jeśli każdą liczbę umieścisz w osobnej linii pliku. Najwyraźniej spacja to za mało aby oddzielić liczby. Fortran czyta całe rekordy. Widocznie twój kompilator fortrana jest tak ustawiony, że nowa linia oddziela rekordy.
ODPOWIEDZ