Çözüldü Algoritmayı Unity'de kodlamada ilerleyemiyorum

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

sıddııık

Decapat
Katılım
31 Ağustos 2022
Mesajlar
285
Daha fazla  
Cinsiyet
Erkek
Kod:
public int sayi;
    int bolunecekSayi = 2;
    int toplam;
    void Start()
    {
        Debug.Log("Sayi giriniz:");
        if(sayi % bolunecekSayi == 0)
       {
            toplam = toplam + bolunecekSayi;
            bolunecekSayi++;
       }
       else
       {
            bolunecekSayi++;
       }
       if(bolunecekSayi > sayi / 2)
       {
          if(toplam == sayi)
          {
               Debug.Log("Sayimiz mükemmel sayidir= " + sayi);
          }
          else
          {
               Debug.Log("Sayimiz mükemmel sayi degildir= " + sayi);
          }
       }
    }
Kodum bu şekilde hata almıyorum ama
Kod:
void Start()
    {
        Debug.Log("Sayi giriniz:");


Bu koddan sonrası gelmiyor. Sonrasında yapması gerekeni yapmamasını anlamadım. Yardımcı olabilecek olan var mı?
 
Son düzenleyen: Moderatör:
Çözüm
Benim anlamadığım neden "while" döngüsü kullanıldı.
Diğer döngüleri de kullanabilirsin. Ben while kullanmayı tercih ettim. Sorun neden döngü kullanıldığı ise:
Döngü tüm sayıları sıra sıra deniyor, hangi sayılar tam bölüyor diye. Senin girdiğin sayıya kadar olan sayıların hepsini denemeden de sayının mükemmel olup olmadığına karar vermiyor. Hepsini denedikten sonra karar veriyor.
Yazdığın kodu tam anlamadım ama koda göre "sayi" değerini 5 ve altında girersen bir tepki alabilirsin. 5 ve üstünde bir sayı girdiğin durumunda tepki vermemesi normal.
C#:
if(bolunecekSayi > sayi / 2)
       {
          if(toplam == sayi)
          {
               Debug.Log("Sayimiz mükemmel sayidir= " + sayi);
          }
          else
          {
               Debug.Log("Sayimiz mükemmel sayi degildir= " + sayi);
          }
       }
"bolunecekSayi" buraya gelene kadar 3 oluyor. "bolunecekSayi" değerinin "sayi" / 2 değerinden büyük olması için "sayi" değerinin en fazla 5 olması gerekiyor yoksa bu if komudu atlanır ve kod biter. Dolayısıyla if'in içindeki if de çalışmaz else de.

Kodun amacını söylersen yardım edebilirim.
 
Son düzenleme:
Yazdığın kodu tam anlamadım ama koda göre "sayi" değerini 5 ve altında girersen bir tepki alabilirsin. 5 ve üstünde bir sayı girdiğin durumunda tepki vermemesi normal.
C#:
if(bolunecekSayi > sayi / 2)
       {
          if(toplam == sayi)
          {
               Debug.Log("Sayimiz mükemmel sayidir= " + sayi);
          }
          else
          {
               Debug.Log("Sayimiz mükemmel sayi degildir= " + sayi);
          }
       }
"bolunecekSayi" buraya gelene kadar 3 oluyor. "bolunecekSayi" değerinin "sayi" / 2 değerinden büyük olması için "sayi" değerinin en fazla 5 olması gerekiyor yoksa bu if komudu atlanır ve kod biter. Dolayısıyla if'in içindeki if de çalışmaz else de.

Kodun amacını söylersen yardım edebilirim.
Algoritma sorusu bu şekilde "Girilen sayının mükemmel sayı olup olmadığını bulan programın algoritma ve akış diyagramını çiziniz."
 
Algoritma sorusu bu şekilde "Girilen sayının mükemmel sayı olup olmadığını bulan programın algoritma ve akış diyagramını çiziniz."
C#:
public int Sayi;
int x = 1;
int sayilarinToplami;

void Start()
{
while(x < Sayi){
 if(Sayi%x == 0){
 sayilarinToplami = sayilarinToplami+x;

}
x++;
}
 if(sayilarinToplami == Sayi){
Debug.Log(Sayi + " bir mükemmel sayıdır.");

}
else{
Debug.Log(Sayi + " bir mükemmel sayı değildir");


}
}
Bilgisayar başında olmadan yazdığım için küçük hatalar olabilir. Bu arada projeyi çalıştırmadan bu scripti attığın objenin componentlerinden girmen gerekiyor sayıyı.

Kodda girilen sayıya kadar olan sayıları deneyerek , girdiğin sayının bölenlerini buluyor. Bunları toplayarak girdiğin sayıya eşit olup olmadığını kontrol ediyor.

Edit: Hatalıymış , düzelttim.
 
Son düzenleme:
Benim anlamadığım neden "while" döngüsü kullanıldı.
Diğer döngüleri de kullanabilirsin. Ben while kullanmayı tercih ettim. Sorun neden döngü kullanıldığı ise:
Döngü tüm sayıları sıra sıra deniyor, hangi sayılar tam bölüyor diye. Senin girdiğin sayıya kadar olan sayıların hepsini denemeden de sayının mükemmel olup olmadığına karar vermiyor. Hepsini denedikten sonra karar veriyor.
 
Çözüm
Diğer döngüleri de kullanabilirsin. Ben while kullanmayı tercih ettim. Sorun neden döngü kullanıldığı ise:
Döngü tüm sayıları sıra sıra deniyor, hangi sayılar tam bölüyor diye. Senin girdiğin sayıya kadar olan sayıların hepsini denemeden de sayının mükemmel olup olmadığına karar vermiyor. Hepsini denedikten sonra karar veriyor.
Anladım teşekkür ederim.
 

Technopat Haberler

Yeni konular

Geri
Yukarı