C#'da belirli basamakları toplama

YarenBeyza

Femtopat
Katılım
13 Mayıs 2021
Mesajlar
3
Daha fazla  
Cinsiyet
Kadın
C#'da kendi girdiğim bir sayının 1., 3., 5.. Gibi sadece tek basamaklarını toplamak istiyorum ama girdiğim sayıda string kalsın istiyorum ve yapamadım. Bir öneriniz var mı?
 
Son düzenleyen: Moderatör:
C#:
static int sumOddBase(int number) {
    return sumOddBase(number + "");
}

static int sumOddBase(string number) {
    int sum = 0;
    for (int i = 0; i < number.Length; i += 2) {
        sum += Convert.ToInt32(number[i] + "");
    }
    return sum;
}

Basit bir şekilde tek basamaklar toplanabilir. Eğer sayı "string" haldeyse içerisindeki her bir karakterin rakam olduğunuzdan emin olmanız gerekiyor. Aksi halde attığım kod Convert işlemi sırasında exception fırlatacaktır.
 
C#:
static int sumOddBase(int number) {
    return sumOddBase(number + "");
}

static int sumOddBase(string number) {
    int sum = 0;
    for (int i = 0; i < number.Length; i += 2) {
        sum += Convert.ToInt32(number[i] + "");
    }
    return sum;
}

Basit bir şekilde tek basamaklar toplanabilir. Eğer sayı "string" haldeyse içerisindeki her bir karakterin rakam olduğunuzdan emin olmanız gerekiyor. Aksi halde attığım kod Convert işlemi sırasında exception fırlatacaktır.
Ben kötü hissediyorum şu an kesin saçma bir şey soruyorum ama öğrenmeye çalışıyorum orada ki iki tane " işareti ne işe yarıyor.Ben While-For-If kullanarak yapmaya çalışıyorum da if kısmında sürekli takılıyorum.
Sayı değerlerini string yapamazsınız. Yapmak istediğin ve takıldığın kod bloğunu atar mısın?
yapamıyorum.png

bu şekilde başladım ama ... yapmaya çalıştığım şey ise mesela 12358 gibi bir sayı girildiğinde 1,3,ve 8 sayıları yani tek basamakları toplayan çift basamakta kalanları çarpan kod yazmak ama daha toplayanı yazamadım.
 
Son düzenleme:
number + "", number.ToString(); ile hemen hemen aynı şey.
Bir tür kısayol. Tam sayı(int) ile string'in toplamı bir string olacağı için boş string ile bir sayıyı toplarsanız o sayıyı string'e implicit(bilinçsiz) olarak cast etmiş olursunuz.

Bilgisayarlar saymaya 0'dan başlar bu yüzden String indexi olarak bakıldığında tek basamaklar aslında 0, 2, 4, 6... indexler olmuş olur. Bu yüzden 0'dan başlayarak 2'şer olarak string'i uzunluğuna kadar saydığınızda tek basamakları gezmiş olursunuz.

1 2 3 5 8
0 1 2 3 4

İstenilen değerler: 1, 3, 8; istenilen indexler: 0, 2, 4.

Tek for döngüsü fazlasıyla yeterli. while ve ayrıca bir if kontrolü vs. ile uğraşmanıza gerek yok.
 
number + "", number.ToString(); ile hemen hemen aynı şey.
Bir tür kısayol. Tam sayı(int) ile string'in toplamı bir string olacağı için boş string ile bir sayıyı toplarsanız o sayıyı string'e implicit(bilinçsiz) olarak cast etmiş olursunuz.

Bilgisayarlar saymaya 0'dan başlar bu yüzden String indexi olarak bakıldığında tek basamaklar aslında 0, 2, 4, 6... indexler olmuş olur. Bu yüzden 0'dan başlayarak 2'şer olarak string'i uzunluğuna kadar saydığınızda tek basamakları gezmiş olursunuz.

1 2 3 5 8
0 1 2 3 4

İstenilen değerler: 1, 3, 8; istenilen indexler: 0, 2, 4.

Tek for döngüsü fazlasıyla yeterli. while ve ayrıca bir if kontrolü vs. ile uğraşmanıza gerek yok.
şimdi anladım çok teşekkür ederim
 

Yeni konular

Geri
Yukarı