Uygun basamak değerini bulmak

Başlatan sepulttra, 08 Mart 2018 - 17:01:03

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

sepulttra

d10d9d8 ... d1 şeklindeki 10 basamaklı kodun en sağındaki d1,   d1+2d2+3d3+4d4+......+10d10 (11'in katı) olacak şekilde belirleniyor.
d1, 0-9 arası herhangi bir rakam.

(Örneğin, 020131452 için d1 değerini bulurken 2*2+3*5+4*4+5*1+6*3+7*1+8*0+9*2+10*0=83. 11'in katı için d1 değeri 5 olur.)

9 basamaklı sayıyı alıp onu 10 basamaklı şekilde basan bir programı C dilinde yazmak için hangi adımlar izlenmeli?


OpenSourceIsAnarchism

Biraz geç bir cevap olsa da kendi cevabımı yazmak istedim. Öncelikle soru sorarken, sorduğunuz soruyu başkalarının anlayabileceği şekilde ayrıntılı olarak açıklarsanız cevap alma ihtimaliniz artar. Biraz karmaşık bir şekilde yazmışsınız :)

1-  kullanıcıdan 9 basamaklı bir sayı alınır, istringstream ile alınan string tipindeki input, tek tek integer tipine dönüştürülerek bir 10 eleman kapasiteli bir diziye ilk elemanı d1 için boş bırakılarak yerleştirilir.

2-  d1 + 2*d2 + 3*d4 + ... + 10*d10 hesaplaması for döngüsüyle yapılır(bu hesaplama ilk adımda da yapılabilirdi), x değişkenine atanır.

3-  x'in 11'e bölümünden kalana bakarız ve bunu y değişkenine atarız, eğer y -10 veya 1 çıkarsa böyle bir sayı üretilemez demektir(çünkü d1'in rakam olması gereklidir ancak verilen durumlar d1'in 10 olmasını gerektirir). Ancak y'nin mutlak değeri sayılan durumların dışında 10'dan küçükse böyle bir sayı üretilebilir. Bu durumda d1 = 11-|kalan| olur.

4-  d1, verilen 9 basamaklı sayının başına eklenir ve elde edilen 10 basamaklı sayı kullanıcıya gösterilir.