Pobierz plik - M. Jurkiewicz
Transkrypt
Pobierz plik - M. Jurkiewicz
Program w języku Fortran obliczający średnią arytmetyczną wszystkich elementów macierzy
mniejszych od wartości W
.
I.
Schemat blokowy
Algorytm zapisany w języku naturalnym
II.
I.
II.
III.
Dane wejściowe:
K – liczba kolumn macierzy A
N – liczba wierszy macierzy A
A(I,J) – wartośd poszczególnych elementów macierzy A
W – zadana wartośd graniczna
Szukane wartości:
S – suma elementów mniejszych od W
L – liczba elementów mniejszych od W
SR – średnia elementów mniejszych od W
Treśd algorytmu w języku naturalnym:
1. Podaj K – liczbę kolumn, N – liczbę wierszy macierzy A,
W – wartośd graniczną
2. Za numer wiersza I podstaw 1
3. Za numer kolumny J podstaw 1
4. Podaj zawartośd elementu macierzy dla I-tego wiersza
i J-tej kolumny
5. Zwiększ numer kolumny o 1
6. Jeśli J≤K, to przejdź do punktu 4
7. Zwiększ numer wiersza o 1
8. Jeśli I≤N, to przejdź do punktu 3
9. Za zmienną S podstaw wartośd 0
10. Za zmienną L podstaw wartośd 0
11. Za numer wiersza I podstaw 1
12. Za numer kolumny J podstaw 1
13. Jeśli A(I,J)<W, to przejdź do punktu 14 w przeciwnym
wypadku przejdź do punktu 16
14. Za zmienną S podstaw wartośd S+A(I,J)
15. Za zmienną L podstaw wartośd L+1
16. Zwiększ numer kolumny o 1
17. Jeśli J<K, to przejdź do punktu 13,
w przeciwnym wypadku przejdź do punktu 18
18. Zwiększ numer wiersza o 1
19. Jeśli I≤N, to za numer kolumny J podstaw 1 i przejdź do punktu 13,
w przeciwnym wypadku przejdź do punktu 20
20. Jeśli l=0, to przejdź do punktu 21,
w przeciwnym wypadku przejdź do punktu 22
21. Wyniki: Brak elementów mniejszych niż W
22. Oblicz średnią i wartośd podstaw za zmienną SR
23. Wyniki: Średnia elementów mniejszych od W
24. Koniec
I:=1;
J:=1;
J:=J+1;
I:=I+1;
S:=0
L:=0
I:=1;
J:=1;
S:=S+A(I,J)
L:=L+1
J:=J+1;
I:=I+1;
J:=1;
SR:=S/L;
III.
Algorytm zapisany w języku o cechach strukturalnych
POCZĄTEK
CAŁKOWITE
N, K, I, J, L
RZECZYWISTE
SR, S, W
RZECZYWISTE TABLICE
A(20,30)
WPISZ: (N, K, W)
I:=1;
POWTARZAJ
POCZATEK
J:=1;
POWTARZAJ
POCZATEK
WPISZ: (A(I,J));
J:=J+1;
KONIEC
AŻ DO (J≤K)
I:=I+1;
KONIEC
AŻ DO (I≤N)
WYPISZ: (A)
S:=0;
L:=0
I:=1;
POWTARZAJ
POCZATEK
J:=1;
DOPÓKI
POCZĄTEK
A(I,J)<W
WYKONUJ
S:=S+A(I,J);
L:=L+1;
KONIEC
J:=J+1;
KONIEC
AŻ DO (J≤K)
I:=I+1;
KONIEC
AŻ DO (I≤N)
JEŚLI (L=0) TO
POCZĄTEK
WYPISZ: (Brak elementów mniejszych od W)
W PRZECIWNYM WYPADKU
SR:=S/L
WYPISZ: (SR)
KONIEC
KONIEC
IV.
Kod źródłowy programu
C Program w języku Fortran obliczający średnią arytmetyczną
C wszystkich elementów macierzy mniejszych od wartości W
C /// Deklaracja zmiennych (wszystkie oznaczenia w programie) ///
INTEGER N, K, I, J, L
REAL A(20,30), SR, S, W
C /// Wymiar macierzy ///
WRITE (*,*) 'PROGRAM - SREDNIA:'
88
WRITE (*,*) 'Podaj wymiar macierzy:'
C /// K - kolumny ; N - wiersze ///
WRITE (*,*) 'K>=1; K<=20'
WRITE (*,*) 'N>=1; N<=30'
READ (*,*) K, N
C /// Sprawdzenie poprawnego wprowadzenia wymiaru macierzy ///
IF (N.LT.1.OR.N.GT.20.OR.K.LT.1.OR.K.GT.30) THEN
PAUSE 'Podano błEdNy wymar macierzy [ENTER]'
GO TO 88
END IF
C /// PODANIE WARTOŚCI W ///
WRITE (*,*) 'Podaj wartosc W='
READ (*,*) W
C /// Wpisywanie wartości w macierz ///
DO I=1, N
DO J=1, K
WRITE (*,*) 'Podaj wartosc A(',I,',',J,')='
READ (*,*) A(I,J)
END DO
END DO
C /// KONTROLNE WYDRUKOWANIE MACIERZY A ///
WRITE (*,*) 'MACIERZ'
DO I=1, N
WRITE (*,*) (A(I,J),J=1,K)
END DO
C /// ALGORYTM OBLICZAJĄCY ŚREDNIĄ
S=0
L=0
DO I=1, N
DO J=1, K
IF (A(I,J).LT.W) THEN
S=S+A(I,J)
L=L+1
END IF
END DO
END DO
C /// SPRAWDZENIE CZY MAMY ELEMENTY DO POLICZENIA ŚREDNIEJ ///
IF (L.EQ.0) THEN
WRITE (*,*) 'BRAK ELEMENTOW SPEŁNIAJACYCH WARUNEK A(I,J)<W'
ELSE
SR=S/L
WRITE (*,*) 'SREDNIA ELEMENTOW MNIEJSZYCH OD W - SR=', SR
END IF
C /// ZAKOŃCZENIE PROGRAMU ///
PAUSE
END