Arama butonu
Bu konudaki kullanıcılar: 1 misafir
1
Cevap
492
Tıklama
0
Öne Çıkarma
C++ döngü sorunu
C
10 yıl
Teğmen
Konu Sahibi

Ö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...
< Resime gitmek için tıklayın >< Resime gitmek için tıklayın >

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



W
10 yıl
Binbaşı

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
}
}
}
}



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.