fortran ornekleri 2013 final
TRANSCRIPT
FORTRAN ÖRNEKLERİ (2013)
NOT:
- Kod satırlarındaki bazı boşlukları göstermek için "_ " kullanılmıştır.
- Kod satırlarının hemen yanında, iki ünlem işareti arasında yazılan bilgiler o satırla ilgili açıklamalar
için yazılmıştır.
İsim ile Karşılama
Klavyeden isim girildikten sonra, 'merhaba ...' şeklinde kullanıcıyı karşılayacak bir program yazınız.
program karsilama
character ad*20
write(*,*) 'adiniz nedir?'
read(*,*) ad
write(*,*) 'merhaba_', ad
end
Toplama İşlemi
Klavyeden girilen iki sayıyı toplayan bir program yazınız.
program toplama
write(*,*) 'toplama icin iki sayi giriniz:'
read(*,*) a, b
c=a+b
write(*,*)'toplam=', c
end
Daire Çevresi ve Alanı Hesaplama
Klavyeden yarıçapı girilen dairenin çevresini ve alanını hesaplayan bir program yazınız.
program daire
pi=3.141592
write(*,*) 'yaricapi giriniz:'
read(*,*) r
cevre=2*pi*r
alan=pi*r**2
write(*,*) 'Alan=_', alan, '_Cevre=_', cevre
end
İdeal Gaz Yoğunluğu Hesaplama
Kullanıcı sırasıyla gazın adını ve mol kütlesini yazdıktan sonra "gazin_adi gazinin yogunlugu
[kg/m3]" şeklinde çıktı veren bir program yazınız.
program yogunluk
character AD*10
P0=1.013E5
T0=273
R=8314
write(*,*)'gazin adi:'
read(*,*) ad
write(*,*) 'gazin mol kutlesi [kg/kmol]:'
read(*,*) m
R0=P0*m/R/T0
write(*,*) ad,'_gazinin yogunlugu [kg/m3]=', R0
end
Organik Molekül Yoğunluğu Hesaplama
Kimyasal formülü CxHy şeklinde verilen bir gaz yakıtın N.Ş.A. yoğunluğunu hesaplayan bir program
yazınız.
program yogunluk
character ad*20
R=8314
P0=1.013e5
T0=273
MC=12
MH=1
write(*,*) 'Gazin adini giriniz:'
read(*,*) ad
write(*,*) 'C ve H atomlarinin sayisini giriniz:'
read(*,*) x,y
M=MC*x+MH*y
R0=P0*M/R/T0
write(*,*) ad, '_gazinin yogunlugu [kg/m3]=', R0
end
İdeal Gaz Hacmi Hesaplama
Bir ideal gazın 1 atm basınç ve 273 K sıcaklıktaki hacim değerini klavyeden girerek, istenilen başka
bir sıcaklık ve basınçtaki hacmini hesaplamaya yarayan bir program yazınız.
program hacim
p0=1.013E5 !1 atm basınç!
T0=273 !273 K sıcaklık!
write(*,*) 'v0 giriniz:'
read(*,*) v0
write(*,*) 'P ve T giriniz:'
read(*,*) P, T
V=v0*p0/P*T/T0
write(*,*) 'Hacim=', V
end
Ortalama ve Toplam Hesaplama
Klavyeden girilen sayıların ortalamasını ve toplamını hesaplayan bir program yazınız. Bu
hesaplamada kullanılacak sayıların girişinin tamamlandığını -999 girerek belirtiniz.
program ortalama
top=0
n=0
20 write(*,*) 'ortalama ve toplam icin sayi giriniz, bitir icin -999'
read(*,*) sayi
if (sayi.eq.-999) goto 10
top=top+sayi
n=n+1
goto 20
10 ort=top/n
write(*,*) 'toplam=', top, '_ortalama=', ort
end
Ders Geçme
Klavyeden sırasıyla öğrencinin adı ve soyadı, öğrenci numarası, arasınav notu, final notu girilerek
öğrencinin ders geçme durumunu ve başarı notu harfini gösteren bir program yazınız. Programın
sonlanması için final notunun negatif girilmesi şartı tanımlayınız.
Başarı Notu Arasınav*0.4+Final*0.6
Başarı Notu Harfi
100 - 90 A1
89 - 80 A2
79 - 70 B1
69 - 60 B2
59 - 50 C
49 - 0 F3
program sinav
character AS*30, BNH*2
10 write(*,*)'Ad soyad, No, Ara ve Final sinav notlarini gir,final ne
&gatif girilirse programi bitir' !& işareti alt satırdan devam etmek için kullanılır!
read(*,*)AS,NO,ARA,FIN
if (FIN.LT.0) stop
BN=0.4*ARA+0.6*FIN
if (BN.GE.90) BNH='A1'
if (BN.GE.80 .and. BN.LT.90) BNH='A2'
if (BN.GE.70 .and. BN.LT.80) BNH='B1'
if (BN.GE.60 .and. BN.LT.70) BNH='B2'
if (BN.GE.50 .and. BN.LT.60) BNH='C'
if (BN.LT.50) BNH='F3'
write(*,*)'ad=',AS,'_No=',No,'_Basari Notu=',BNH
goto 10
end
Denklem Köklerini Bulma
formatındaki bir denklemin köklerini, klavyeden a, b, c katsayılarını girerek
hesaplayan bir program yazınız.
program denklem
write(*,*)'A,B,C yi giriniz'
read(*,*)A,B,C
D=B**2-4*A*C !Δ hesaplandı!
if (D) 10,20,30 !*!
10 write(*,*)'gercek kok yoktur.'
stop
20 X=-B/(2*A)
write(*,*)'cakisik iki kok var=',x
30 X1=(-B+D**0.5)/(2*A)
X2=(-B-D**0.5)/(2*A)
write(*,*)'X1=',X1,'X2=',X2
end
*if döngülerinde bu tür, virgüllerle ayrılmış bir ifade kullanıldığında şartlar şu şekilde
belirlenmektedir:
D < 0 ise 10
D=0 ise 20
D>0 ise 30
Üçgen Şartı Kontrolü
Üç kenar uzunluğu klavyeden girildiğinde üçgenin türünü ya da üçgen şartının sağlanmadığını belirten
bir program yazınız.
program ucgen
write(*,*) 'ucgen kenar uzunluklarini giriniz'
read(*,*) a,b,c
if (a.lt.(b+c) .and. b.lt.(a+c) .and. c.lt.(a+b)) then
if (a.eq.b .and. b.eq.c)then
write(*,*)'bu ucgen eskenar ucgendir'
else if ((a.eq.b .and. b.ne.c) .or.
&(b.eq.c .and. c.ne.a).or.
&(b.eq.c .and. c.ne.a))then
write(*,*)'bu ucgen ikizkenar ucgendir'
else
write(*,*)'bu ucgen cesitkenar ucgendir'
end if
else
write(*,*)'bu bir ucgen degildir'
end if
end
Vücut Kitle İndeksi (BMI) Hesaplama
Klavyeden vücut ağırlığı ve boy bilgileri girilerek vücut kitle indeksi hesaplayan, sonuca göre
değerlendirme yapan bir program yazınız.
Vücut Kitle İndeksi
⁄
Değerlendirme
Obez
Şişman
Kilolu
Normal
Zayıf
program kindex
real ki
write(*,*) 'agirligi (kg) giriniz:'
read(*,*) agirlik
write(*,*) 'boyu (m) giriniz:'
read(*,*) boy
ki=agirlik/boy**2
write(*,*) 'ki=',ki
if (ki.lt.20) then
write(*,*) 'zayif'
elseif (ki.ge.20.and.ki.lt.25) then
write(*,*) 'normal'
elseif (ki.ge.25.and.ki.lt.30) then
write(*,*) 'kilolu'
elseif (ki.ge.30.and.ki.lt.35) then
write(*,*) 'sisman'
else
write(*,*) 'obez'
end if
end
Rüzgar Hızı Hesaplama
Farklı arazi koşullarının etkisini de göz önünde bulunduracak şekilde; klavyeden belirli bir yükseklikte
ölçülen rüzgar hızı ve yükseklik girilerek, istenilen yükseklikteki rüzgar hızını hesaplayabilen bir
program yazınız.
(
)
Klavyeden girilmesi gereken değerler: V0, Z, Z0, p
V :Hesaplanmak istenen hız
Z :Rüzgar hızının hesaplanacağı yükseklik
V0 :Belirli bir yükseklikte ölçülen hız
Z0 :V0 hızının ölçüldüğü yükseklik
p :Pürüz yüksekliği ve stabiliteye bağlı katsayı
1- Büyük şehir: p=0.40
2- Küçük yerleşim yeri: p=0.28
3- Kırsal alan: p=0.16
program ruzgar
10 write(*,*)'1-buyuk sehir'
write(*,*)'2-kucuk yerlesim yeri'
write(*,*)'3-kirsal alan'
write(*,*)'p katsayisinin belirlenmesi icin secim yapiniz:'
read(*,*)no
if (no.lt.1 .or. no.gt.3)then
write(*,*)'yanlis girdiniz tekrar girin'
goto 10
elseif (no.eq.1)then
P=0.4
elseif(no.eq.2)then
P=0.28
else
P=0.16
endif
write(*,*)'Z0 giriniz'
read(*,*)Z0
write(*,*)'V0 giriniz'
read(*,*)V0
write(*,*)'Z giriniz'
read(*,*)Z
V=(Z/Z0)**P*V0
write(*,*)'Z=',Z
write(*,*)'V=',V
end
Serbest Düşme
Durgun halden serbest düşme hareketine başlayan bir cismin, klavyeden girilen yükseklik ve Δt saniye
aralıklarla hızını ve zeminden yüksekliğini hesaplayan bir program yazınız.
program sdusme
G=9.81
write(*,*)'yuksekligi (m),DELTAT(s) giriniz'
read(*,*)Y0,DELTAT
write(*,*)'T[s] v[m/s] y[m]'
write(*,*)'------------------------'
10 T=T+DELTAT
V=g*T
Y=Y0-0.5*G*T**2
write(*,20)T,V,Y
20 format(1x,3F10.3)
if (Y.GT.0) goto 10
end
Sayıya Kadar Toplama (if kullanarak)
Klavyeden girilen n sayısına kadar olan tamsayıların toplamını if döngüsü kullanarak hesaplayan bir
program yazınız.
program toplam
top=0
i=1
write(*,*) 'n giriniz:'
read(*,*) n
20 if (i.gt.n) goto 10
top=top+i
i=i+1
goto 20
10 write(*,*) 'toplam=', top
end
Sayıya Kadar Toplama (do kullanarak)
Klavyeden girilen n sayısına kadar olan tamsayıların toplamını do döngüsü kullanarak hesaplayan bir
program yazınız.
program toplam
top=0
write(*,*) 'n giriniz:'
read(*,*) n
do 50 i=1, n, 1
top=top+i
50 continue
write(*,*) 'toplam=', top
end
Hız, Zaman, Yol Hesaplama
Sabit ivme ile hareket eden bir aracın ulaştığı maksimum hızı ve bu hıza ulaşması için geçen süreyi
klavyeden girerek; birer saniye aralıklarla ulaştığı hızı (m/s) ve maksimum hıza ulaşana kadar aldığı
yolu hesaplayan bir program yazınız.
program hiz
write(*,*) 'maksimum hiz (km/h) ve sureyi (s) girin:'
read(*,*) vmax, tmax
A=vmax/tmax
write(*,*) 'Zaman (s) Hiz (m/s) Yol (m)'
do 10 t=1, tmax, 1
v=a*t
x=0.5*a*t**2
write(*,*) t, v*3.6, x
10 continue
end
İç İçe Do Döngüsü -1
program do1
write(*,*) 'i j k'
write(*,*) '-----'
do 10 i=1, 3
do 20 j=2, 4
k=i+j
write(*,*) i, j, k
20 continue
10 continue
end
İç İçe Do Döngüsü -2
program do2
write(*,*) 'i j k'
write(*,*) '-----'
k=0
i j k
-----
1 2 3
1 3 4 1 4 5
2 2 4
2 3 5 2 4 6
3 2 5
3 3 6 3 4 7
i j k
----- 1 3 4
1 4 9
2 3 14 2 4 20
do 10 i=1, 2
do 20 j=3, 4
k=k+i+j
write(*,*) i, j, k
20 continue
10 continue
end
İç İçe Do Döngüsü -3
program do3
write(*,*) 'i j k'
write(*,*) '-----'
do 10 i=1, 2
k=0
do 20 j=3, 4
k=k+i+j
write(*,*) i, j, k
20 continue
10 continue
end
İç İçe Do Döngüsü -4
program do4
write(*,*) 'i j k'
write(*,*) '-----'
do 10 i=1, 2
do 20 j=3, 4
k=0
k=k+i+j
write(*,*) i, j, k
20 continue
10 continue
end
i j k
----- 1 3 4
1 4 9
2 3 5
2 4 11
i j k -----
1 3 4
1 4 5 2 3 5
2 4 6
İç İçe Do Döngüsü -5
program do5
write(*,*) 'i j k'
write(*,*) '-----'
k=0
do 10 i=1, 2
do 20 j=5, 3, -1
k=k+i+j
write(*,*) i, j, k
20 continue
10 continue
end
İç İçe Do Döngüsü -6
program do6
write(*,*) 'i j k'
write(*,*) '-----'
k=0
do 10 i=1, 3, 2
do 20 j=5, 3, -1
k=k+i+j
write(*,*) i, j, k
20 continue
10 continue
end
i j k -----
1 5 6
1 4 11
1 3 15 3 5 23
3 4 30
3 3 36
i j k -----
1 5 6
1 4 11 1 3 15
2 5 22
2 4 28 2 3 33
Pi Sayısı Hesaplama
dizisinin terimleri toplanarak pi sayısı istenen duyarlılıkla hesaplanabilir. Bu
toplam kısaca ∑
şeklinde de yazılabilir. Bu dizinin ilk n terimini kullanarak
sayısını hesaplayan bir program yazınız.
!denklemler incelendiğinde pi sayısını hesaplamak için sadece terim sayısı girilmesinin yeterli
olduğu görülmektedir!
program pisayisi
real pi
write(*,*) 'Pi sayisi kac terimle hesaplanacak?'
read(*,*) n
pi=0
isaret=-1
do 10 i=1, n
isaret=-isaret !bu satır ile döngüdeki i değeri arttıkça isaret değeri bir + bir - değer alacaktır!
terim=isaret*4./(2*i-1) !Fortran'da 4. yazılmazsa bölme işlemi gerçekleşmemekte!
pi=pi+terim
write(*,*) 'terim sayisi:', i, '_pi=', pi !*!
10 continue
end
* Bu programda her döngü tekrarında hesaplanan pi sayısı ekrana yazdırılmaktadır. Böylece pi
sayısının gittikçe doğru değerine yakınsaması ekrandan izlenebilir. Eğer continue satırının hemen
öncesindeki write satırı continue sonrasına yazılırsa sadece girilen n terimi sonunda hesaplanan pi
sayısı görüntülenebilir.
Dizi Toplam
fonksiyonunun değerini, verilen x için dizinin ilk n terimini kullanarak hesaplayan bir program
yazınız. x ve n değerleri klavyeden girilecektir.
Açıklama:
Fonksiyon incelendiğinde ∑
işlemine karşılık geldiği görülmektedir. Dolayısıyla
n değerine kadar olan işlemlerin hesaplanması için do döngüsü yazılırken bu işlem
tanımlanmalıdır.
program dizitoplam
write(*,*) 'x degerini giriniz:' !f(x) fonksiyonun hesaplanması için gerekli olan x değeri!
read(*,*) x
write(*,*) 'toplanacak terim sayisini giriniz:'
read(*,*) n
fx=0 !fx döngüsü oluşturmadan önce başlangıç değerini sıfır olarak tanıtmamız gerekir!
do 10 i=1, n
terim=(-1)**(i+1)*(x**i)/i
fx=fx+terim
write(*,*) 'i=', i, ',_f(x)=', fx
10 continue
end
Tarih Yazımı
gg.aa.yyyy şeklinde girilmiş tarihi gg aa yyyy ve gg/aa/yyyy formatında geri veren bir program
yazınız.
program tarih
integer gun, ay, yil
write(*,*) 'Gunun tarihini gg.aa.yyyy seklinde giriniz:'
read(*,10) gun, ay, yil
10 format (i2,1x,i2,1x,i4)
write(*,20) gun, ay, yil
20 format ('_',i2,'_',i2,'_',i4)
write(*,30) gun, ay, yil
30 format (1x,i2,'/',i2,'/',i4)
end
Sayı Girişi
Klavyeden girilen sayı kaç basamaklı olursa olsun, ilk 4 basamağını okuyan ve 'girilen sayi: (ilk 4
basamak)' şeklinde dönüş yapan bir program yazınız.
program sayi
write(*,*) 'bir sayi gir'
read(*,10) n
10 format(i4)
write(*,20)n
20 format (1x,'girilen sayi:',i4)
end
Faktöriyel Hesaplama
Klavyeden girilecek n sayısına kadar bütün sayılara ait faktöriyel değerlerini hesaplayan bir program
yazınız.
Elde edilmek istenen:
program faktoriyel
write(*,*) 'n degerini girin:'
read(*,*) n
fakt=1
write(*,20)
20 format (1x,'sayi',30x,'faktoriyel',/,1x,4('-'),30x,10('-'))
do 100 i=1, n
fakt=fakt*i
write(*,10)i, fakt
10 format (1x,i4,3x,F30.3)
100 continue
end
Sayi Faktoriyel
---- ---------- 1 1
2 2
3 6 4 24
5 120
... ...
n n!
Gelecekteki Nüfusu Hesaplama
Bir bölgenin gelecekteki nüfusu formülü ile hesaplanabilir. Burada
: Gelecekteki nüfus
: Yeni nüfus
p : Nüfus artış oranı
n : İki nüfus sayımı arasındaki yıl farkı
anlamındadır. Nüfus artış oranı p, aşağıdaki formül yardımı ile hesaplanabilir.
(
)
eski bir sayıma göre nüfustur. Eski ve yeni yıllar, bunlara ait nüfus sayımları verildiğine göre
sayımlardan sonraki 5,10,15,...,50 yıl için nüfusları hesaplayıp yazan bir program yazınız.
program nufus
real NY,NE,P,N
integer NG,YY
write(*,*)'eski nufus ve yil'
read(*,*)NE,YE
write(*,*)'yeni nufus ve yil'
read(*,*)NY,YY
N=YY-YE
P=(NY/NE)**(1/N)-1
write(*,*) ' YIL NUFUS'
do 10 I=5,50,5
NG=NY*(1+P)**I
YG=YY+I
write(*,20)YG,NG
10 continue
20 format(1x,F5.0,I9)
end
Celsius-Fahrenheit-Kelvin
Celcius birimindeki sıcaklıkları -50oC ile 150oC arasında 10'ar derece aralıklarla Fahrenheit ve Kelvin
birimine çeviren bir tablo hazırlayan bir program yazınız.
TF=32+1.8*TC
TK=273.15+TC
program sicaklik
C C, F, K sicaklik tablosu
write(*,*) ' T[C] T[F] T[K]'
do 10 TC=-50, 150, 10
TF=32+1.8*TC
TK=273.15+TC
write(*,20) TC, TF, TK
10 continue
20 format (1x,F5.0,1x,F5.1,1x,F6.2)
end
Dizi Değişkenlerle Standart Sapma ve Ortalama Hesaplama
Klavyeden girilen n tane sayının aritmetik ortalamasını ve standart sapmasını hesaplayan bir program
yazınız.
∑
√
∑
program standart
dimension x(100)
write(*,*)'n giriniz:'
read(*,*) n
do 10 i=1, n
write(*,*) i,'. sayiyi gir'
read(*,*) x(i)
top=top+x(i)
10 continue
xort=top/n
top=0
do 20 i=1, n
top=top+(x(i)-xort)**2
20 continue
ss=sqrt(top/(n-1))
do 30 i=1, n
write(*,*) 'x(',i,')-', x(i)
30 continue
write(*,*) 'ortalama=', xort
write(*,*) 's sapma=', ss
end
Matris Toplama
(
) (
)
C=A+B toplama işlemini yapan bir program yazınız.
(
)
m : satır sayısı
n : sütun sayısı
program matris
dimension A(2,3),B(2,3),C(2,3)
integer A,B,C
write(*,*)'satir ve sutun sayisini gir'
read(*,*)M,N
do 10 I=1,M
read(*,*)(A(I,J),J=1,N)
10 continue
do 20 I=1,M
read(*,*)(B(I,J),J=1,N)
20 continue
do 30 I=1,M
do 30 J=1,N
C(I,J)=A(I,J)+B(I,J)
30 continue
write(*,100)
do 40 I=1,M
write(*,110)(A(I,J),J=1,N)
40 continue
100 format(' A matrisi',/,9('-'))
110 format(1x,3I3)
write(*,120)
do 50 I=1,M
write(*,110)(B(I,J),J=1,N)
50 continue
120 format(' B matrisi',/,9('-'))
write(*,130)
do 60 I=1,M
write(*,110)(C(I,J),J=1,N)
60 continue
130 format(' C matrisi',/,9('-'))
end
şeklinde gelişigüzel girilen sayıları sıralayan bir program yazınız.
Dizi değişkenler kullanılmadan:
program siralama
real ks
read(*,*)A1,A2,A3,A4
if (A2.lt.A1)then
ks=A2
A2=A1
A1=ks
endif
if(A3.lt.A1)then
ks=A3
A3=A1
A1=ks
endif
if(A4.lt.A1)then
ks=A4
A4=A1
A1=ks
endif
if(A3.lt.A2)then
ks=A3
A3=A2
A2=ks
endif
if(A4.lt.A2)then
ks=A4
A4=A2
A2=ks
Sayıları sıralama
A1 A2 A3 A4
4 3 2 1
endif
if(A4.lt.A3)then
ks=A4
A4=A3
A3=ks
endif
write(*,*)A1,A2,A3,A4
end
Dizi değişkenler kullanılarak:
program sirala
real ks
dimension A(1000)
write(*,*)'kac sayi siralanacak?'
read(*,*)N
do 10 I=1,N
write(*,*)I,'. sayiyi gir'
read(*,*)A(I)
10 continue
do 20 I=1,N-1
do 25 J=I+1,N
if (A(J).lt.A(I))then
ks=A(J)
A(J)=A(I)
A(I)=ks
endif
25 continue
20 continue
do 30 I=1,N
write(*,*)A(I)
30 continue
End
Trigonometrik Tablo
0o’den 90
o’ye kadar 5
o aralıklarla bütün açıların sin, cos, tan ve cot değerlerini hesaplayarak tablo
halinde kullanıcıya gösteren bir program yazınız.
program tablo
pi=3.1415926
write(*,*)'aci sin cos tan cot'
write(*,*)'---------------------------'
do 100 I=0,90,5
X=I*pi/180
if (I.eq.0)then
write(*,10)I,sin(x),cos(x),tan(x)
10 format (1x,I3,1X,F5.3,1x,F5.3,1x,F6.3,1x,'sonsuz') *
else if (I.eq.90) then
write(*,20)I,sin(x),cos(x),1/tan(x)
20 format(1x,I3,1x,F5.3,1x,F5.3,'sonsuz',F6.3)
else
write(*,30)I,sin(x),cos(x),tan(x),1/tan(x)
30 format(1x,I3,1x,F5.3,1x,F5.3,1x, F6.3,1x,F6.3)
endif
100 continue
end
* Format satırında ‘sonsuz’ yazmamızın nedeni, tan(90) ve cot(0) değerinin sonsuz olmasıdır. Fortran
sonsuza giden işlemleri yapamayıp hata verdiği için bu işlemleri yapmasını do döngü kullanarak
engelledik ve sonuç kısmına elle ‘sonsuz’ girişi yaptık.
Eğik Atış
Verilen bir açısıyla ve v0 ilk hızıyla (x0, y0) noktasından atılan bir cismin hareketi esnasında zamana
bağlı (belirlenen zaman aralıklarıyla) olarak koordinatlarını hesaplayan bir program yazınız. Cisim
yere düştüğü zaman program bitirilecektir.
PROGRAM EgikAtis
PI =3.14
G=9.81
FAKTOR = PI/180
WRITE(*,*) 'X0,Y0='
READ(*,*) X0, Y0
WRITE(*,*) 'V0, ALFA='
READ(*,*) V0, ALFA
WRITE(*,*) 'DELTAT='
READ(*,*) DELTAT
T = 0
ALFAR =ALFA * FAKTOR
C ALFAR:ALFA açısının radyan cinsinden degeridir
10 T = T +DELTAT
X = X0 +V0*T*COS(ALFAR)
Y = Y0 +V0*T*SIN(ALFAR)-G/2*T**2
WRITE(*,20) T, X, Y
IF (Y.LE.0) STOP
GOTO 10
20 FORMAT (1X, 3F10.3)
END
Kombinasyon Hesaplama
N tane değişik elemandan R tanesinin kaç farklı şekilde seçilebileceğini hesaplayan bir program
yazınız.
integer function kullanarak:
program kombinasyon
integer C,R,FAKT
write(*,*)'N ve R gir'
read(*,*)N,R
C=FAKT(N)/FAKT(R)/FAKT(N-R)
write(*,*)'kombinasyonlarin sayisi=',C
end
integer function FAKT(M)
FAKT=1
do 10 I=1,M
FAKT=FAKT*I
10 continue
return
end
call komutu kullanarak:
program kombi
integer C,R,FAKTN,FAKTR,FAKTNER
write(*,*) 'N ve R gir'
read(*,*) N,R
call FAKT(N,FAKTN)
call FAKT(R,FAKTR)
call FAKT(N-R,FAKTNER)
C=FAKTN/FAKTR/FAKTNER
write(*,*) 'kombinasyonlarin sayisi=',C
end
subroutine FAKT(M,FAKTM)
integer FAKTM
FAKTM=1
do 10 I=1,M
FAKTM=FAKTM*I
10 continue
return
end
Sınav Sonucu Dosyası
Öğrencilerin adı, vize ve final notlarını girdikten sonra başarı notunu hesaplayan ve program dışında
bir dosyada log (kayıt) oluşturan bir program yazınız.
program sinav
character adsoy*30
integer ara,fin
open(5,file='sinav.txt')
40 write(*,*)'Adsoyad,ara ve final notlarini gir'
read(*,10)adsoy,ara,fin
BN=0.3*ara+0.7*fin
write(5,20)adsoy,BN
write(*,*)'Devam mi? (E/H)'
read(*,30)cevap
if (cevap.eq.'E'.or. cevap.eq.'e')goto 40
10 format (A30,2(1x,I3))
20 format(A30,1x,F5.1)
30 format(A1)
close(5)
end