C Programlama Pisagor Hesabı
-
a yı pisagor kabul ettim. soruda uzunluğu max 500 olabilir dediği için en yakın 22 nin karesi 500 e yakın oluyor bu yüzden a b c max 22 olur dedim. a yani pisagor 22 den geriye doğru gelecek b ce c içerde kontrol edilecek ve yine çok dönmesin diye a<b+c dedim pisagor kenarların toplamından daha büyük olduğundan dedim ama çalışmıyor nereyi yanlış düşündüm.
#include <stdio.h> #include <stdlib.h> int main() { int a,b,c; for (a=22;a<1;a--) { for (b=1;b<22;b++) { for (c=1;c<22;c++) { while (b+c>a) { if (a*a==b*b+c*c) printf("%d = %d + %d\n", a*a,b*b,c*c); } } } } return 0; }
-
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c;
for (a=1;a<22;a++)
{
for (b=1;b<22;b++){
for (c=1;c<22;c++){
if (a<(b+c))
{
if (a*a==((b*b)+(c*c)))
{
printf("%d = %d + %d\n", a*a,b*b,c*c);
}
}
}
}
}getch();
return 0;
}
while() içinden çıkarmıyo program, ve ilk for'da düzenleme yaptım
KuZeTaR tarafından 19/Mar/13 15:46 tarihinde düzenlenmiştir -
a 22'den geriye dogru giderken b ve c 1'er artıyor, while kosulu da a = 11 ve b , c = 12 oldugunda saglanıyor fakat bu sefer de pisagor kuralına uyacak bir esitlik cıkmıyor if icinde.
o yüzden ilk for'u (a=1;a<22;a++) seklinde yazıp while'ı if yap, while döngüsünden cıkmıyor cünkü.