: yok ya soru soran falan yok ben kendim uğraşıyorum can sıkıntısından:D sqrt fonksiyonundan dnen sayı tam mı virgüllü mü onu nasıl anlarım bulamadım ben de direk fonksiyon yazdım bu arada j=i+1ile başlatınca ikinci dngüyü imlec bos bos yanip sndü bişey çıkmadı:D eğer bunu daha hızlı yapabilen ve çalıştığından emin olduğun bi kod varsa koyarsan hem algoritma meraklısı arkadaşlara da yararı olur bi de dedigim gibi sqrtyi nasıl kullanırım anlayamadım daha doğrusu bi sayı tam sayı mı yoksa virgüllü mü Hoca Round metodunu kullanman lazım. Şyle ki: #include #include int main Output: round of 12.0 is 12.0round of 12.1 is 12.0round of 12.2 is 12.0round of 12.3 is 12.0round of 12.4 is 12.0round of 12.5 is 12.0round of 12.6 is 13.0round of 12.7 is 13.0round of 12.8 is 13.0round of 12.9 is 13.0round of 13.0 is 13.0 Kaynak: http://www.codecogs.com/reference/c/math. h/round. php Verdiğim linki incele derim :)

yok ya soru soran falan yok ben kendim uğraşıyorum can sıkıntısından:D sqrt fonksiyonundan dnen sayı tam mı virgüllü mü onu nasıl anlarım bulamadım ben de direk fonksiyon yazdım bu arada j=i+1ile başlatınca ikinci dngüyü imlec bos bos yanip sndü bişey çıkmadı:D eğer bunu daha hızlı yapabilen ve çalıştığından emin olduğun bi kod varsa koyarsan hem algoritma meraklısı arkadaşlara da yararı olur bi de dedigim gibi sqrtyi nasıl kullanırım anlayamadım daha doğrusu bi sayı tam sayı mı yoksa virgüllü mü

bu round fonksiyonunu şimdi hatırladım:D C ye bayağıdır ara vermiştim bazı fonksiyonları unutmuşum:F zaten aynısı vbde de var kendi yazdıgım fonksiyon yerine round'u ve sqrtyi kullanınca bayağı hızlı oldu:) #include <stdio. h> #include <conio. h>#include <math. h> int main { int i, j; for(i=1;i<=500;i++) { for(j=1;j<=i;j++) } getch ; return 0;} bu şekilde 0-500 arasını bile nceki 0-100 arasından çok daha hızlı yaptı:)

müridler ///////////////////////////////////////////////////////////////////////////////////#include <stdio. h>#include <conio. h>int tamkaremi ; //tam kare ise karekoku dondurur degilse 0 dondururint main { int i, j; for(i=1;i<=100;i++) { for(j=1;j<=i;j++) } getch ; return 0;}int tamkaremi { int sayac, sonuc=0; for(sayac=2;sayac<=(sayi/2);sayac++) { if sayi/sayac) sayac) } return sonuc;} /////////////////////////////////////////////////////////////////////////////// şyle bi kod yazdım bu kod şimdiki haliyle 0-100 arası tam kare dik üçgenleri hesaplayıp 3-4-5 6-8-10 şeklinde ekrana yazdırıyo ama biraz yavaş çalışıyo gibi geldi bana acaba algoritmada bariz bi sorun mu var yoksa bu hız byle bi işlem için normal mi anlayan müridler bi kodu deneyip el atarsa iyi olur

: bu round fonksiyonunu şimdi hatırladım:D C ye bayağıdır ara vermiştim bazı fonksiyonları unutmuşum:F zaten aynısı vbde de var kendi yazdıgım fonksiyon yerine round'u ve sqrtyi kullanınca bayağı hızlı oldu:) #include #include #include int main { int i, j; for(i=1;i<=500;i++) { for(j=1;j<=i;j++) } getch ; return 0;} bu şekilde 0-500 arasını bile nceki 0-100 arasından çok daha hızlı yaptı:) İşe yaramasına ve yapabilmene sevindim :))

@wking kenarları tam sayı olan ikiz kenar üçgen demek istedi NmC anladıgım kadarıyla:) çünkü kodda denenen dik kenarlar hep tam sayı

: Kenarları hesaplarken içteki for'u 1den başlatman gereksiz sanırım. mesela 1 için 1-2-3-4-... Hepsini deniyor. Sonra 2 için 1-2-3-4-... diye gidecek. Farkındaysan 1-2 ve 2-1 oluştu. Aynı kenarları iki kere denemiş oldun. O yüzden ikinci dngüyü i'nin değerinden başlatmak daha mantıklı olabilir. Hatta i+1 den. Bildiğim kadarı ile ikizkenar olup tam kare çıkması mümkün değil. Ha ayrıca tam karebul fonksiyonu yerine sqrt den sonuç almak daha mantıklı. Tabi soruyu soran tüm fonksiyonları kendinin yazmanı istemiyosa. Ha sqrt ile nasıl kullanırsın. Dndürdüğü sayının tam kısmını sayıdan çıkarırsın. sonuç sıfırsa sayı tam sayıdır. :) Hocam ikizkenar iki kenarın uzunlukları 32 2 olursa hipotenüs 2 katı yani 64 olur ve tamkaredir. 64 = 8. Yani ikizkenar üçgenin hipotenüsü tamkare olabilir. Umarım yanlış anlamamışımdır. o_O

Kenarları hesaplarken içteki for'u 1den başlatman gereksiz sanırım. mesela 1 için 1-2-3-4-... Hepsini deniyor. Sonra 2 için 1-2-3-4-... diye gidecek. Farkındaysan 1-2 ve 2-1 oluştu. Aynı kenarları iki kere denemiş oldun. O yüzden ikinci dngüyü i'nin değerinden başlatmak daha mantıklı olabilir. Hatta i+1 den. Bildiğim kadarı ile ikizkenar olup tam kare çıkması mümkün değil. Ha ayrıca tam karebul fonksiyonu yerine sqrt den sonuç almak daha mantıklı. Tabi soruyu soran tüm fonksiyonları kendinin yazmanı istemiyosa. Ha sqrt ile nasıl kullanırsın. Dndürdüğü sayının tam kısmını sayıdan çıkarırsın. sonuç sıfırsa sayı tam sayıdır. :) There are 10 types of people in the world. Those who knows binary and those who dont...

round yapmanıza bile gerek yok... :) Cidden performans düşkünü iseniz sayıyı integera cast edin. zaten tam kısmını alacak :) int sayi = sqrt ; double fark = eskisayi -sayi; falan filan feşmekan... ilk 'i koymanıza da gerek yok aslında. Otomatik cast ediyo olması lazım (: Neyse ben namazı kılıp yatiom :D Hayırlı geceler hepinize... There are 10 types of people in the world. Those who knows binary and those who dont...

: @wking kenarları tam sayı olan ikiz kenar üçgen demek istedi NmC anladıgım kadarıyla:) çünkü kodda denenen dik kenarlar hep tam sayı Yanlış anlamışım sanırım :/ :D :|