while de faktöriyel hesaplamada i'ye girilen değer sonradan (i-- 'de girilen sondeğeri) değişiyor. Hep 1 oluyor. Son kısımda "printf("%d faktöriyel = %d ", i, sonuc);" i'ye girilen ilk değeri alacağına i'ye 1 diyor. İlk değer nasıl atanır?
#include <stdio.h>
main()
{
int i, sonuc = 1;
printf("Faktoriyeli istenen sayi= " );
scanf("%d", &i);
while (i > 1)
{
sonuc = sonuc * i;
i--;
}
printf("%d faktöriyel = %d ", i, sonuc);
getch();
return 0;
}
Kendin azaltıyorsun ya 1 olana kadar?
Evet hocam. ++ kullansam düzelir. --'de girdiğimiz değeri çıkaramıyoruz galiba. i'ye 6 girince i 1 e kadar azalıyor 6'yı koruyamıyorum.
C dilinin yazım kurallarını pek bilmediğim için kodun nasıl olacağını bilemem ama şöyle bir şey yardımcı olur:
Faktoryelin hesaplanması işlemini ayrı bir metot olarak yazın (mesela, faktoryel(int i) ) ve geri döndürdüğü değeri sonuc olarak ele alın. Sizin girdiğiniz sayıyı da metoda parametre olarak girin. Bu zaman girdiğiniz sayı faktoryel() metodu dahilinde ne kadar değişirse değişsin main() metodunda olduğu şekilde kalır.
İlk değeri i'ye değil de başka bir değişkene atayın, daha sonra i'yi o değişkene eşitleyin, en son da çıktı alırken o değişkeni alın.
#include <stdio.h>
int main()
{
int ilkDeger, sonuc = 1;
printf("Faktoriyeli istenen sayi= " );
scanf("%d", &ilkDeger);
int i = ilkDeger;
while (i > 1)
{
sonuc = sonuc * i;
i--;
}
printf("%d faktöriyel = %d ", ilkDeger, sonuc);
getchar();
return 0;
}
Ya da [mention=642538]@ethernity[/mention] dediği gibi fonksiyon oluşturarak da yapabilirsin.
#include <stdio.h>
int faktoriyel(int j);
int main()
{
int i, sonuc = 1;
printf("Faktoriyeli istenen sayi= " );
scanf("%d", &i);
sonuc = faktoriyel(i);
printf("%d faktöriyel = %d ", i, sonuc);
getchar();
return 0;
}
int faktoriyel(int j)
{
int sonuc = 1;
while (j > 1)
{
sonuc = sonuc * j;
j--;
}
return sonuc;
}
Çok teşekkür ederim.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Ekim 2018 - 10:30:29
++'dan da olur demiştim uğraştım yaptım.
Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 24 Ekim 2018 - 10:30:54
#include <stdio.h>
main()
{
int i= 1, sonuc=1, a;
printf("Faktoriyeli istenen sayi= " );
scanf("%d", &a);
while (i <= a)
{
sonuc = sonuc * i;
i++;
}
printf("%d faktöriyel = %d ", a, sonuc);
getch();
return 0;
}
[mention=642543]@007[/mention] kodlarınızı code etiketi içine alırsanız okunması daha kolay olur :)
[mention=642543]@007[/mention] uğraşıp kendin yapman daha güzel olmuş :)
TEşekkür ederim. Code içine aldım.