.NET 2.x Перевести код на PHP в код C#

Узнай цену своей работы

Формулировка задачи:

Добрый день.
<?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));
}
имеется код на PHP, как реализовать точно такой же алгоритм на С#?

Описание:

РНН представляет собой 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)));
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы