while

Başlatan 007, 22 Ekim 2018 - 16:54:44

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

007

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;

}
2 kuruşluk ben EMİR VEREN 4 kuruşlukların 5 kuruşluk işlerini yaparım.

Amenofis

Kendin azaltıyorsun ya 1 olana kadar?

007

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.
2 kuruşluk ben EMİR VEREN 4 kuruşlukların 5 kuruşluk işlerini yaparım.

ethernity

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.

edge35

#4
İ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;
}


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

007

#5
Ç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;

}

2 kuruşluk ben EMİR VEREN 4 kuruşlukların 5 kuruşluk işlerini yaparım.

cosmicowl

[mention=642543]@007[/mention] kodlarınızı code etiketi içine alırsanız okunması daha kolay olur :)

edge35

[mention=642543]@007[/mention] uğraşıp kendin yapman daha güzel olmuş :)


Sorunlarımı çözerken her şeyiyle öğrenmeye çalışıyorum. Bana balık verenden Allah razı olsun, ama bana balık tutmayı öğretenden Allah daha çok razı olsun :)

007

TEşekkür ederim. Code içine aldım.
2 kuruşluk ben EMİR VEREN 4 kuruşlukların 5 kuruşluk işlerini yaparım.