Ödevim , a,b,c ve d en fazla en olan doğal sayılar olmak üzere a*a + b*b = c*c + d*d eşitliğini sağlayan tüm a,b,c,d sayılarını ve kaç tane olduğunu bulan programı en fazla üç döngü(for ,while ,do while veya goto) kullanarak yazınız.
Sıkıntım ise sadece 1 adet bu eşitliği sağlayan sayılar bulunuyor ve program bitiyor. Programı eke koyuyorum yardımcı olursanız sevinirim...
a, b, c ve d en fazla en mi olan? 3 döngü ile yapmak için biraz matematik kullanabilirsin, şöyle; a b ve c doğal sayılar kadar (veya int sınırına kadar) arttırırsın, sonunda şöyle bir denkelemin olur; a2 + b2 = c2 + d2 a b c yi bildiğin için; d2 = a2+b2-c2 burdan d'nin doğal sayı olup olmadığını çıkartırsın, doğal sayıysa print edersin. Daha da matematik kasarak döngülerinin sınırlarını da düşürebilirsin, örneğin a ile b int sınırına kadar gidecek (o şart aslında), ama c'nin gitmesine gerek yok, şöyle ki; a 5 b 4 ken mesela kareleri toplamı 25 + 16'dan 41 eder, 41'in karekökün'ün - sonsuza yuvarlanmış haline kadar götürsen yeter c'yi. örnek for;
for (int a = 1; a < INTMAX; a++) { for (int b = 1; b < INTMAX; b++) { akareartibkare = a*a+b*b; for (int c = 1; c < floor(sqrt(akareartibkare)); c++) { akabkeck = sqrt(akareartibkare - c*c) ; if (akabkeck == round(akabkeck)) { //a, b ve c normal a b ve c. d ise akabkeck olmak üzere çıktı ver } } } }
yeni mesaja git
Yeni mesajları sizin için sürekli kontrol ediyoruz, bir mesaj yazılırsa otomatik yükleyeceğiz.Bir Daha Gösterme