

Pascalda Function Kullanarak Alt Program İle İlgili Yardım Acilll
-
merhaba arkadaşlar üniversite 1. sınıf öğrencisiyim final nottuna katkıda bulunmak için programlama hocası 2 adet ödev verdi
biraz uğraştım ama beceremedim
ödevler şöyle;
1 den 100'e kadar olan sayılar içinden dik üçgenin, dik kenarlarına ait değerleri olup olmadığının tespitini yapan bir yazılım geliştiriniz..
not: alt program olarak fonksiyon kullanılacaktır.
bu 1. ödeve hiç kafa yoramadım...
2. ödev
Veri satırından girilen (20 sayısıda dahil) 20 ye kadar olan sayıların faktöriyelini alan programı geliştiriniz..
not: alt program olarak fonksiyon kullanılacaktır.
for,while,bide diziyi öğrendik bunların dışında yazmayın dedi.
yardımcı olabilecek arkadaş var mı
2. soru için
şunu yaptım
type dztip:array[1..20]of integer; var j,i:byte; d:array [1..20]of integer; function fak(x:dztip):integer; begin for i:=1 to 20 do begin for j:=1 to i do begin j:=j*i; fak:=j; end; end; end; begin for i:=1 to 20 do begin writeln(a,' sayisinin faktoriyeli = ',fak(d)); readln(); end; end.
beceremedim faktöriyeli alıyorum fakat 20 tanesini birden yazdırabilmek için dizi gerekiyor onuda functionda yapamadım -
yok mu 1. ödev için programcı bir arkadaş ,yardımcı olsun
2. ödevi yaptım ....
type dizitip=array [1..20] of integer; var i,j:byte; a,fak:integer; function fakt:dizitip; begin for i:=1 to 20 do begin fak:=1; for j:=1 to i do begin fak:=fak*j; end; fakt[i]:=fak; end; end; begin for a:=1 to 20 do begin writeln(a ,' - faktorieli= ',fakt[a]); writeln('[--------------------------]'); end; readln(); end.arcahmet tarafından 12/Oca/14 16:34 tarihinde düzenlenmiştir -
1. ödevi örnekle anlatımısın hocam anlayamadım :D
bir de bende birinci sınıftayım ama fonksiyon hiç kullanmadık heralde pascal gereksiz diye.
-
a kare + b kare = c kare ise dik üçgen olurda orda ki olayı anlamadım (100,3) kombinasyon yapıp hepsini mi deneyeceksin yoksa 0-100 arası 3 değer alıp onları mı kontrol ettireceksin ?
-
eğer kenar uzunlukları 1 ile 100 arasındaki tamsayılardan oluşan dik üçgenlerin kenar uzunluklarını bulmak istiyorsan;
a*a+b*b=c*c olacak . b*b yi karsıya atınca c*c-b*b=a*a oluyor. burdan da (c-b)(c+b)=a*a olması lazım
for c:=1 to 100 do begin
for b:=1 to 100 do begin
while c<b do begin // c nin b den kücük olması lazım aksi takdirde bütün sayıları 2 kere denemiş olur ve sonuc eksi cıkacagından hata filan verdirebilir.
a:= sqrt((b-c)*(b+c));
end;
end;
end;
bu sekilde a yı bulabilirsin gibime geliyo ama önce var kısmında a yı real , diğer ikisini de integer olarak tanımlaman lazım.
daha sonra a nın tamsayı olup olmadıgını denetlettirip ( nası yapacağını bilmiyorum ) bu 3 ünü birden ekrana yazdırırsın.
bende daha amatör oldugum icin bilenler baksa daha iyi olur