Konuyu görüntüle
IUCODERS FORUM > Programlama > Diğer (COBOL,asp php js..) > fortran program ar?ivi
Yazar
kartane


avatar
istanbul
Kayıt: 22.02.2007
17.04.2007-19:20 #20259
Klavyeden girilen herhangi iki sayı arasındaki(m ile n) mükemmel sayıları(kendinden başka tam bölenlerinin toplamı kendisine eşit olan sayı.Örnek, 6'nın tam bölenleri 1,2 ve 3 bunların toplamı yine sayının kendisine eşit.) bulup ekrana yazan F90 programı:


program perfect
implicit none
integer::m,n,top,i,j
print*,"kucuk tamsayiyi giriniz:"
read*,m
print*,"buyuk tam sayiyi giriniz:"
read*,n
do i=m,n
top=0
do j=1,i-1
if(mod(i,j)==0) then
top=top+j
end if
end do

if (top==i) then
print*,top
end if
end do
end program

bu da benden....





Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
17.04.2007-20:19 #20267
bmg 2 quiz de sorulmuş sorunun cevabı. kodlar bana ait deil ama kimse koymadığı için alıntı olarak koymak istedim. faydalı birşey.extreme'e teşekkürler smug

2 sayının ebob unu bulan f90 kodu.
extreme yazdi
 
real a,b,x1,x2,kalan
10 write(*,*) "1. sayıyı giriniz"
read(*,*) a
write(*,*) "2. sayıyı giriniz"
read(*,*) b
x1 = max(a,b)
x2 = min(a,b)

do
kalan = mod(x1,x2)
if (kalan == 0) exit
x1 = x2
x2 = kalan
cycle
end do
write(*,*) "Obeb=",x2
goto 10
end








Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
17.04.2007-20:24 #20270
concordia yazdi
 
girilen sayıların toplamını ve ortalamasını bulan,sayılar 0'dan küçük olduğunda hata veren,işlem sonlandırıldıktan sonra devam etmek isteyip istemediğimi soran programı yazmaya çalıştım.ama olmadıworried nerde hata yapıyorum yardımcı olurmusunuz?

program düzgün çalışıyor. neyini yapamadım diyorsun ki ? sadece ortalamalarda tam kısmını alıyor. o da toplam değişkeninin integer olmasından dolayı. yani ort değişkenini programın en başında sayılar girilince alırsan bu sorun da kalmaz.





Yazar
hasaney


avatar
Ünye
Kayıt: 11.12.2006
17.04.2007-20:30 #20272
arkadaşlar ekok u yapmaya çalıştım ebob tan yararlanarak ama olmadı hatayı söyleyen olursa çok iyi olurr

integer a,b,sonuc
write(*,*) "ekok u istenen 2 sayi giriniz"
read(*,*) a,b
sonuc=(a*b)/ebob(a,b)
write(*,*) "sonuc=",sonuc
end

subroutine ebob(x1,x2)
integer x1,x2,c,d,x,k,kucuk
if(x1<x2) then
kucuk=x1
else
kucuk=x2
end if
do x=1,kucuk
c=(x1/kucuk)*kucuk
d=(x2/kucuk)*kucuk
if((c==x1).and.(d==x2)) then
k=x
end if
end do
end subroutine

d ohd ohd oh





d?? d? d?p d?d?d?p
d?? d? d?p d??d??d???p
Yazar
concordia


avatar

Kayıt: 14.02.2007
17.04.2007-20:40 #20274
arka arkaya birkaç tane sayıyı negatif alınca patlıyorworried





Yazar
concordia


avatar

Kayıt: 14.02.2007
17.04.2007-20:41 #20275
burakkanmaz sana yazdım.belirtmemişim...





Yazar
marakana


avatar

Kayıt: 08.03.2007
17.04.2007-20:53 #20276
1'den 100'e kadar olan asal sayıları bulup ekrana yazan F90 programı: daha önce koyulmuş buraya ama bu biraz daha farklı...

program asal_sayilar
implicit none
integer::sayi,bolen,sayac
sayac=0
print*,"buprogram 1 ile 100 arasindaki asal sayilari verir"
do sayi=2,100

do bolen=2,sayi-1
if (mod(sayi,bolen)==0) then
sayac=sayac+1
end if

end do
if (sayac==0) then
print *,sayi, " asal sayidir."

end if
sayac=0
end do
end program








Yazar
kartane


avatar
istanbul
Kayıt: 22.02.2007
17.04.2007-20:53 #20277
hasaney yazdi
 
arkadaşlar ekok u yapmaya çalıştım ebob tan yararlanarak ama olmadı hatayı söyleyen olursa çok iyi olurr

integer a,b,sonuc
write(*,*) "ekok u istenen 2 sayi giriniz"
read(*,*) a,b
sonuc=(a*b)/ebob(a,b)
write(*,*) "sonuc=",sonuc
end

subroutine ebob(x1,x2)
integer x1,x2,c,d,x,k,kucuk
if(x1<x2) then
kucuk=x1
else
kucuk=x2
end if
do x=1,kucuk
c=(x1/kucuk)*kucuk
d=(x2/kucuk)*kucuk
if((c==x1).and.(d==x2)) then
k=x
end if
end do
end subroutine

d ohd ohd oh




başta ebob işlemini tanımlamamışsın , x=EBOB(A,B) gibi sanırım





Yazar
hasaney


avatar
Ünye
Kayıt: 11.12.2006
17.04.2007-21:31 #20290
sağolasın
dediğini denedim ama beceremedim galiba
arkdaşlar yapan warsa yollarsa çok iyi olurgood luckgood luck





d?? d? d?p d?d?d?p
d?? d? d?p d??d??d???p
Yazar
effective


avatar

Kayıt: 10.11.2006
17.04.2007-22:32 #20307
bu da bendendancing
Girilen bir tamsayının çift ya da tek oldugunu tespit eden fortran programını olusturun.
PROGRAM TEK_CIFT
IMPLICIT NONE
REAL A,B
CHARACTER(1) CVP
DO
WRITE(*,*) "BIR SAYI GIRINIZ"
READ(*,*) A
B=INT(A/2)*2
IF (A==B) THEN
PRINT*, "GIRDIGINIZ SAYI CIFTTIR"
ELSE
PRINT*, "GIRDIGINIZ SAYI TEKTIR"
END IF
PRINT*,"DEVAM ETMEK ISTIYOR MUSUNUZ?(E/H)"
READ*,CVP
IF((CVP=="H").OR.(CVP=="h")) EXIT
END DO
END PROGRAM







Yazar
effective


avatar

Kayıt: 10.11.2006
17.04.2007-22:34 #20309
arkadaşlar write yerine bu şekilde print yazınca da oluyor.değiştirmeyi unutmuşum.blushing







Yazar
marakana


avatar

Kayıt: 08.03.2007
17.04.2007-23:39 #20339
Gelir vergisinin aşağıdaki kurallara göre belirlendiği bir vergi hesabı programı:
Gelir<=150.000.000 ise vergi oranı %25
Gelir<=300.000.000 ise vergi oranı %30
Gelir<=600.000.000 ise vergi oranı %35
Gelir<=1.200.000.000 ise vergi oranı %40
Gelir>=1.200.000.000 ise vergi oranı %50


PROGRAM Gelir Vergisi
IMPLICIT NONE
REAL Gelir, Vergi, V1, V2, V3, V4
V1=150000000*0.25
V2=150000000*0.30
V3=300000000*0.35
V4=600000000*0.40
IF(Gelir<=150000000) THEN
Vergi=Gelir*0.25
ELSE IF(Gelir<=300000000) THEN
Vergi=V1+(Gelir-150000000)*0,3
ELSE IF(Gelir<=600000000) THEN
Vergi=V1+V2+(Gelir-300000000)*0.35
ELSE IF(Gelir<=1200000000) THEN
Vergi=V1+V2+V3+(Gelir-600000000)*0.4
ELSE
Vergi=V1+V2+V3+V4+(Gelir-1200000000)*0.5
END IF
WRITE(*,*) “Hesaplanan vergi miktarı”, Vergi
END PROGRAM Gelir Vergisi


Yukarıdaki programda uygulanan vergilendirme mantığı şu şekildedir:
Örneğin, bir kişinin geliri 200.000.000 tl ise, bunun ilk 150.000.000 tl’sı %25’ten, kalan
200.000.000-150.000.000=50.000.000 tl’sı ise % 30’dan vergilendirilecektir.O nedenle programın başında her aralığın sabit vergileri hesaplanarak V1, V2, V3, V4 değişkenlerine atanmaktadır…








Yazar
fonemi


avatar

Kayıt: 09.01.2007
17.04.2007-23:43 #20343
INTEGER i, j, k
DO i=1,100
DO j=1,100
DO k=1,100
IF((i**2+j**2==k**2).AND.(i.LE.j)) THEN
WRITE(*,1) i,j,k
1 FORMAT(3I10)
END IF
END DO
END DO
END DO
END

1'den 100'e kadar olan sayılardan Pisagor üçgenlerini çıkaran program. Daha önce C'yle yazmıştım, Fortran'a çevirdim. Birkaç arc ve pi sayısı işlemleriyle yaklaşık açılar da belirlenebilir. Örneğin 3 4 5 37 53 90 gibi.





Yazar
reccae


avatar
istanbul
banlandı
Kayıt: 15.02.2006
17.04.2007-23:55 #20346
ytlye çevirseydin keşke programı bi sürü 0 var kafa karışıyo biggrinbiggrin


görünen o ki 1. sınıfların yoğun gayretiyle fortran eziyeti biraz daha hafifleyecek dersi alan öğrenciler için dancing

inşallah her zaman böyle faydalı paylaşım görürüz sitemizde

biraz da gaz verelim fortran öğrenen arkadaşlarımıza clown
uzaya giden araçların bir kısmında halen fortran kullanılıyor bildiğim kadarıyla
40 yıldır yazılan kodlar o kadar çoğalmışki onları başka bir dile çevirme zahmetine girmek istemiyorlarmış. tabi fortrandan daha hızlı bir programlama dili daha icad edilmedi. sebeplerden biriside bu olsa gerek





insa ettigim binanin cimentosu kelâm

Yazar
burakkanmaz


avatar
Gaziantep
Kayıt: 02.10.2006
18.04.2007-02:18 #20358
reccae yazdi
 

uzaya giden araçların bir kısmında halen fortran kullanılıyor bildiğim kadarıyla
40 yıldır yazılan kodlar o kadar çoğalmışki onları başka bir dile çevirme zahmetine girmek istemiyorlarmış. tabi fortrandan daha hızlı bir programlama dili daha icad edilmedi. sebeplerden biriside bu olsa gerek

biggrin gaza bak sen. tutmayın bizi. tongue bırakın NASA da obeb bulalım laughing
benim kafamı karıştıran şu;
fortranda yazdığımız yazı 5 satır. fakat exe nin boyutu 150-200 kb.
başka dillerde yazdığımız 200+ satır fakat boyut 80 kb.
nedeni nedir acaba bu uçurumun ? fortran en hızlısı diorsunuz. ama en çokta yer kaplayanı değil mi ?confused


hasaney yazdi
 
arkadaşlar ekok u yapmaya çalıştım ebob tan yararlanarak ama olmadı hatayı
söyleyen olursa çok iyi olurr
d ohd ohd oh


ebob x ekok = a x b
iki sayının obeb i çarpı okek i = sayıların çarpımı
zaten obeb bulmayı bilioruz. a*b/obeb şeklinde okek i buluruz di mi ?smug

concordia yazdi
 
arka arkaya birkaç tane sayıyı negatif alınca patlıyorworried

birkaç döngü hatası var. anlatmak istediğini doğru anladıysam aşağıdaki kod istediğin gibi;
integer i,n,toplam,sayi
real ort
CHARACTER*1 CEVAP
do
toplam=0
write(*,*)"toplanacak sayi miktarini giriniz"
read(*,*)n
do i=1,n
5 write(*,*)i,". sayiyi giriniz"
read(*,*)sayi
if (sayi .lt. 0) then
write(*,*)"hatali giris! sayiyi tekrar giriniz:"
goto 5
end if
toplam=toplam+sayi
end do
ort=toplam/n
write(*,*)"toplam=",toplam
write(*,*)"ortalama=",ort
write(*,*)"devam etmek istiyormusunuz?E/H"
READ(*,*) CEVAP
if ((cevap=="h") .or. (cevap=="H")) EXIT
end do
end








1 2 3 4 5
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb