Софтуерно Инженерство
Loading...
+ Нов въпрос
k_aleksiev avatar k_aleksiev 6 Точки

Special Numbers. Защо ако поставя променливата над for цикъла този кода не работи коректно

Здравейте. Така кода работи вярно, но бях поставил  int sumOfDigits = 0; над for цикъла и тогава кода не работеше коректно. Като  е над         for - а  доколкото знам  може да се ползва за всичко надолу, защо тогава не работеше  ? 

int number = int.Parse(Console.ReadLine())   

           for (int i = 1; i <= number; i++)

            {

                int sumOfDigits = 0;

                int digits = i;

                while (digits > 0)

                {

                    sumOfDigits += digits % 10;

                    digits = digits / 10;

                }

                bool isSpecialNumber = (sumOfDigits == 5 || sumOfDigits == 7 || sumOfDigits == 11);

                Console.WriteLine($"{i} -> {isSpecialNumber}");

Тагове:
0
C# Fundamentals
NonaG avatar NonaG 111 Точки
Best Answer

Защото на всяко следващо число i ти трябва сумата от цифрите му да е 0 в началото на натрупването на стойността в нея. Като я  изкараш извън for, сумата се натрупва за всяка цифра на всяко число i до края на целия for.

0
kalinamomkova avatar kalinamomkova 26 Точки

Здравей, най вероятно, защото при всяка итерация на for цикъла променливата sumOfDigits е равна на нула. Ако въпросната променлива се намира над for цикъла то тя не би била равна на нула при всяка итерация на цикъла, а ще пази натрупаната сума от всички итерации до момента. За да ти е равна на нула просто ще трябва да го зададеш в цикъла. Т.е

int number = int.Parse(Console.ReadLine())   

int sumOfDigits;

           for (int i = 1; i <= number; i++)

            {

                sumOfDigits = 0;

0