Ubuntu Türkiye

Yazılım => Programlama => C/C++ => Konuyu başlatan: 007 - 22 Ekim 2018 - 16:54:44

Başlık: while
Gönderen: 007 - 22 Ekim 2018 - 16:54:44
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;

}
Başlık: Ynt: while
Gönderen: Amenofis - 23 Ekim 2018 - 13:28:04
Kendin azaltıyorsun ya 1 olana kadar?
Başlık: Ynt: while
Gönderen: 007 - 23 Ekim 2018 - 15:17:17
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.
Başlık: Ynt: while
Gönderen: ethernity - 23 Ekim 2018 - 18:36:11
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.
Başlık: Ynt: while
Gönderen: edge35 - 24 Ekim 2018 - 00:49:15
İ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;
}
Başlık: Ynt: while
Gönderen: 007 - 24 Ekim 2018 - 10:18:21
Ç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;

}

Başlık: Ynt: while
Gönderen: cosmicowl - 24 Ekim 2018 - 17:39:10
[mention=642543]@007[/mention] kodlarınızı code etiketi içine alırsanız okunması daha kolay olur :)
Başlık: Ynt: while
Gönderen: edge35 - 24 Ekim 2018 - 21:03:55
[mention=642543]@007[/mention] uğraşıp kendin yapman daha güzel olmuş :)
Başlık: Ynt: while
Gönderen: 007 - 25 Ekim 2018 - 08:37:29
TEşekkür ederim. Code içine aldım.