Задача: Get a Number and Display the Sum of the Digits


0

Привет,

Разгледах как е решена тази задачано не мога да схвана как работи ключовата част от условието. Някой може ли да ми го разтълкува ред по ред? 

  1.  r = num % 10;
  2.  num = num / 10;
  3.  sum = sum + r;




Отговори



0

% в c# се нарича modulus (на български не мога да го преведа) и това което прави е да изкарва като резултат, остатъка от деленето на едно число с друго. Например: 123%2=1 или 123%10=3. Така в първия ред от програмата, отделя като резултат последната цифра, в случая - 3.
Втория ред разделя числото на 10. Например: 123/10=12.3. Но понеже num вече е int тип, не може да съдържа дробни числа, затова се закръгля надолу, а именно - 12 (което ще бъде върнато като num в началото на следващия цикъл).

Третия ред добавя резултата от първия ред към сумата от цифрите.

Цикъла се изпълнява, докато num е различен от 0(нула).

Дано да съм го обяснил разбираемо :)




0

Modulus  в буквален превод си е модул, което обаче на практика не отговаря на математическото понятие за модул. В случая (имам предвид поне за C#) modulus трябва да се разбира като остатък (от делене на числа). Както съвсем правилно си го и обяснил.

Освен варианта на изписване показан по-горе, може да има и вариант:

variable %= expression, което равносилно на variable = variable % expression


от kirily (10 точки)


1

Здравей, колега.

с num % 10 взимаш последната (най - дясна) цифра от num, а с num / 10 делиш num на 10 без остатък, тоест махаш най - дясната цифра. И така, докато num  е различно от 0. Опитай се сам да видиш стъпка по стъпка какво се случва (Debug ти е пръв помощник).


от sfo321 (160 точки)