.NET 2.x Перевести код на PHP в код C#
Формулировка задачи:
Добрый день.
имеется код на PHP, как реализовать точно такой же алгоритм на С#?
<?php function valid_rnn($rnn) { for ($i = 1; $i <= 10; $i++) { $s = 0; $t = $i - 1; for ($j = 1; $j <= 11; $j++) { ++$t; if ($t == 11) $t = 1; $s = $s + $t * substr($rnn,$j - 1,1); } $k = $s % 11; if ($k < 10) break; } return ($k == substr($rnn,11,1)); }
Описание:
РНН представляет собой 12-тиразрядное число. Первый фасет (2 разряда) - код области. Для кодирования используются 3, 4 разряды кода классификатора "Система обозначения административнотерриториальных органов" (СОАТО). Второй фасет (2 разряда) - код района. Перечень и номера налоговых комитетов соответствуют кодам районов области, принятые в системе Министерства финансов Республики Казахстан. Третий фасет (1 разряд) - имеет значение: 0 - для юридических лиц, с 1 до 9 - для физических лиц. Четвертый фасет (6 разрядов) - порядковый номер налогоплательщика, присваиваемый налоговым органом. Пятый фасет (1 разряд) - контрольный разрядСам алгоритм:
Каждому разряду РНН (счет слева направо), исключая последний 12-ый разряд, присваивается вес от 1 до 10. 11-ый разряд имеет вес равный 1. Определяется сумма произведений значений каждого разряда на его вес (S = r1*1 + r2*2 + ... + r10*10 + r11*1). Полученная сумма делится на 11 и выделяется целая часть C (т.е. максимальное целое число, на которое S делится без остатка). Определяется разница между суммой произведений и целочисленным вхождением по модулю 11 в эту сумму ( i = S - C*11). Если полученная разница меньше 10, то она является значением контрольного разряда. Если после первого прохода контрольное число получается больше или равное 10, расчет повторяется, но каждому разряду вес присваивается, начиная с 2. Для третьего прохода соответственно с 3 и т.д. Если результат при 10 циклах повторения расчета всегда имеет значение большее или равное 10, то данное число для регистрационного номера налогоплательщика исключается.Решение задачи: «.NET 2.x Перевести код на PHP в код C#»
textual
Листинг программы
static bool valid_rnn(long rnn) { long k = 0; for (int i = 1; i <= 10; i++) { int s = 0; int t = i - 1; for (int j = 1; j <= 11; j++) { ++t; if (t == 11) t = 1; int e = Convert.ToInt32(rnn.ToString().Substring(j - 1,1)); s = s + t * e; } k = s % 11; if (k < 10) break; } return (k == Convert.ToInt64(rnn.ToString().Substring(1,11))); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д