Нужна помощь с C# или JS :D

Sanya330

Client
Регистрация
16.08.2020
Сообщения
302
Благодарностей
69
Баллы
28
Есть такой код, помогите заставить его работать в Зенке)
C#:
function gera_random(n)
{
    var ranNum = Math.round(Math.random()*n);
    return ranNum;
}
function cnpj()
{
    var n = 9;
    var n1  = gera_random(n);
     var n2  = gera_random(n);
     var n3  = gera_random(n);
     var n4  = gera_random(n);
     var n5  = gera_random(n);
     var n6  = gera_random(n);
     var n7  = gera_random(n);
     var n8  = gera_random(n);
     var n9  = 0; //gera_random(n);
     var n10 = 0; //gera_random(n);
     var n11 = 0; //gera_random(n);    
     var n12 = 1; //gera_random(n);        
    var d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
     d1 = 11 - ( mod(d1,11) );
     if (d1>=10) d1 = 0;
     var d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
     d2 = 11 - ( mod(d2,11) );
     if (d2>=10) d2 = 0;
    retorno = '';
    if (pontuado) retorno = ''+n1+n2+'.'+n3+n4+n5+'.'+n6+n7+n8+'/'+n9+n10+n11+n12+'-'+d1+d2;
    else retorno = ''+n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12+d1+d2;
     return retorno;
}
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
Так как переменная pontuado не имеет никакого значения - значит её нужно определить.
На C# это можно переписать примерно так (вызов функций - две последних строки):
C#:
Func<double,double> gera_random = delegate (double n) {
    Random rand = new Random();
    double ranNum = Math.Round(rand.NextDouble()*n);
      return ranNum;
};
Func<bool, string> cnpj = delegate(bool pontuado){
    double n = 9;
    double n1  = gera_random(n);
    double n2  = gera_random(n);
    double n3  = gera_random(n);
    double n4  = gera_random(n);
    double n5  = gera_random(n);
    double n6  = gera_random(n);
    double n7  = gera_random(n);
    double n8  = gera_random(n);
    double n9  = 0; //gera_random(n);
    double n10 = 0; //gera_random(n);
    double n11 = 0; //gera_random(n);   
    double n12 = 1; //gera_random(n);       
    double d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
            d1 = 11 - ( d1 % 11 );
           d1 = d1>=10 ? 0 : d1;
    
     double d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
          d2 = 11 - ( d2 % 11);
         d2 = d2>=10 ? 0 : d2;
    
    string retorno = string.Empty;
    if (pontuado) retorno = string.Format("{0}.{1}.{2}/{3}-{4}", n1+n2, n3+n4+n5, n6+n7+n8, n9+n10+n11+n12, d1+d2  );
    else retorno = string.Format("{0}", n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12+d1+d2 );
    return retorno;
};

project.SendInfoToLog(string.Format(@"pontuado == true: {0}", cnpj(true)),true );
project.SendInfoToLog(string.Format(@"pontuado == false: {0}", cnpj(false)),true );
88628
 
  • Спасибо
Реакции: Sanya330 и Ilshakin

Sanya330

Client
Регистрация
16.08.2020
Сообщения
302
Благодарностей
69
Баллы
28
Так как переменная pontuado не имеет никакого значения - значит её нужно определить.
На C# это можно переписать примерно так (вызов функций - две последних строки):
C#:
Func<double,double> gera_random = delegate (double n) {
    Random rand = new Random();
    double ranNum = Math.Round(rand.NextDouble()*n);
      return ranNum;
};
Func<bool, string> cnpj = delegate(bool pontuado){
    double n = 9;
    double n1  = gera_random(n);
    double n2  = gera_random(n);
    double n3  = gera_random(n);
    double n4  = gera_random(n);
    double n5  = gera_random(n);
    double n6  = gera_random(n);
    double n7  = gera_random(n);
    double n8  = gera_random(n);
    double n9  = 0; //gera_random(n);
    double n10 = 0; //gera_random(n);
    double n11 = 0; //gera_random(n);  
    double n12 = 1; //gera_random(n);      
    double d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
            d1 = 11 - ( d1 % 11 );
           d1 = d1>=10 ? 0 : d1;
   
     double d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
          d2 = 11 - ( d2 % 11);
         d2 = d2>=10 ? 0 : d2;
   
    string retorno = string.Empty;
    if (pontuado) retorno = string.Format("{0}.{1}.{2}/{3}-{4}", n1+n2, n3+n4+n5, n6+n7+n8, n9+n10+n11+n12, d1+d2  );
    else retorno = string.Format("{0}", n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12+d1+d2 );
    return retorno;
};

project.SendInfoToLog(string.Format(@"pontuado == true: {0}", cnpj(true)),true );
project.SendInfoToLog(string.Format(@"pontuado == false: {0}", cnpj(false)),true );
Посмотреть вложение 88628
Почему-то выходит немножко не то что нужно)
Должен получится результат формата 46.307.667/0001-32
А получается такое
88629

В чём причина я понял, в исходном коде +n1+n2+'.'+n3+n4+n5+'.'+n6+n7+n8+'/'+n9+n10+n11+n12+'-'+d1+d2;
Плюсы значат переменную +N+, а вашем варианте это сложение чисел.
Я конечно придумал вариант переписать формат строки и сделать так n1+0, n2+0, но думаю это не особо верное решение)
Не могли бы вы ещё и с эти помочь? :bt:
 

Вложения

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
Почему-то выходит немножко не то что нужно)
Должен получится результат формата 46.307.667/0001-32
А получается такое Посмотреть вложение 88629
В чём причина я понял, в исходном коде +n1+n2+'.'+n3+n4+n5+'.'+n6+n7+n8+'/'+n9+n10+n11+n12+'-'+d1+d2;
Плюсы значат переменную +N+, а вашем варианте это сложение чисел.
Я конечно придумал вариант переписать формат строки и сделать так n1+0, n2+0, но думаю это не особо верное решение)
Не могли бы вы ещё и с эти помочь? :bt:
Если нужно не сложение, а объединение - можно взять к примеру вот так подкорректировать:
string.Format("{0}{1}.{2}{3}{4}.{5}{6}{7}/{8}{9}{10}{11}-{12}{13}", n1,n2, n3,n4,n5, n6,n7,n8, n9,n10,n11,n12, d1,d2 );
string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}", n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,d1,d2 );

P.S. Соединил в одну функцию, иначе, нужно было бы Random rand = new Random(); выносить за пределы функции (а если забыть случайно - была бы ошибка, в противном случае - выдавало плохой рандом).
C#:
Func<bool, string> GetData = delegate(bool pontuado){
    Random rand = new Random();
    double n = 9;
    double n1  = Math.Round(rand.NextDouble()*n);
    double n2  = Math.Round(rand.NextDouble()*n);
    double n3  =Math.Round(rand.NextDouble()*n);
    double n4  = Math.Round(rand.NextDouble()*n);
    double n5  =Math.Round(rand.NextDouble()*n);
    double n6  = Math.Round(rand.NextDouble()*n);
    double n7  =Math.Round(rand.NextDouble()*n);
    double n8  = Math.Round(rand.NextDouble()*n);
    double n9  = 0;
    double n10 = 0;
    double n11 = 0;
    double n12 = 1;
    double d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
            d1 = 11 - ( d1 % 11 );
           d1 = d1>=10 ? 0 : d1;
  
     double d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
          d2 = 11 - ( d2 % 11);
         d2 = d2>=10 ? 0 : d2;
  
    string retorno = string.Empty;
    if (pontuado) retorno = string.Format("{0}{1}.{2}{3}{4}.{5}{6}{7}/{8}{9}{10}{11}-{12}{13}", n1,n2, n3,n4,n5, n6,n7,n8, n9,n10,n11,n12, d1,d2 );
    else retorno = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}", n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,d1,d2 );
    return retorno;
};

project.SendInfoToLog(string.Format(@"pontuado == true: {0}", GetData(true)),true );
project.SendInfoToLog(string.Format(@"pontuado == false: {0}", GetData(false)),true );
88632


Вариант без использования функций:
bool pontuado = true; // Подкорректировать true или false
Random rand = new Random();
double n = 9;
double n1  = Math.Round(rand.NextDouble()*n);
double n2  = Math.Round(rand.NextDouble()*n);
double n3  =Math.Round(rand.NextDouble()*n);
double n4  = Math.Round(rand.NextDouble()*n);
double n5  =Math.Round(rand.NextDouble()*n);
double n6  = Math.Round(rand.NextDouble()*n);
double n7  =Math.Round(rand.NextDouble()*n);
double n8  = Math.Round(rand.NextDouble()*n);
double n9  = 0; 
double n10 = 0; 
double n11 = 0; 
double n12 = 1; 
double d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
        d1 = 11 - ( d1 % 11 );
       d1 = d1>=10 ? 0 : d1;

 double d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
      d2 = 11 - ( d2 % 11);
     d2 = d2>=10 ? 0 : d2;

string retorno = string.Empty;
if (pontuado) retorno = string.Format("{0}{1}.{2}{3}{4}.{5}{6}{7}/{8}{9}{10}{11}-{12}{13}", n1,n2, n3,n4,n5, n6,n7,n8, n9,n10,n11,n12, d1,d2 );
else retorno = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}", n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,d1,d2 );


if(pontuado) project.SendInfoToLog(string.Format(@"pontuado == true: {0}", retorno),true );
else project.SendInfoToLog(string.Format(@"pontuado == false: {0}", retorno),true );

return retorno;
 
Последнее редактирование:
  • Спасибо
Реакции: djaga и Sanya330

Sanya330

Client
Регистрация
16.08.2020
Сообщения
302
Благодарностей
69
Баллы
28
Если нужно не сложение, а объединение - можно взять к примеру вот так подкорректировать:
string.Format("{0}{1}.{2}{3}{4}.{5}{6}{7}/{8}{9}{10}{11}-{12}{13}", n1,n2, n3,n4,n5, n6,n7,n8, n9,n10,n11,n12, d1,d2 );
string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}", n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,d1,d2 );

P.S. Соединил в одну функцию, иначе, нужно было бы Random rand = new Random(); выносить за пределы функции (а если забыть случайно - была бы ошибка, в противном случае - выдавало плохой рандом).
C#:
Func<bool, string> GetData = delegate(bool pontuado){
    Random rand = new Random();
    double n = 9;
    double n1  = Math.Round(rand.NextDouble()*n);
    double n2  = Math.Round(rand.NextDouble()*n);
    double n3  =Math.Round(rand.NextDouble()*n);
    double n4  = Math.Round(rand.NextDouble()*n);
    double n5  =Math.Round(rand.NextDouble()*n);
    double n6  = Math.Round(rand.NextDouble()*n);
    double n7  =Math.Round(rand.NextDouble()*n);
    double n8  = Math.Round(rand.NextDouble()*n);
    double n9  = 0;
    double n10 = 0;
    double n11 = 0;
    double n12 = 1;
    double d1 = n12*2+n11*3+n10*4+n9*5+n8*6+n7*7+n6*8+n5*9+n4*2+n3*3+n2*4+n1*5;
            d1 = 11 - ( d1 % 11 );
           d1 = d1>=10 ? 0 : d1;
  
     double d2 = d1*2+n12*3+n11*4+n10*5+n9*6+n8*7+n7*8+n6*9+n5*2+n4*3+n3*4+n2*5+n1*6;
          d2 = 11 - ( d2 % 11);
         d2 = d2>=10 ? 0 : d2;
  
    string retorno = string.Empty;
    if (pontuado) retorno = string.Format("{0}{1}.{2}{3}{4}.{5}{6}{7}/{8}{9}{10}{11}-{12}{13}", n1,n2, n3,n4,n5, n6,n7,n8, n9,n10,n11,n12, d1,d2 );
    else retorno = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}{9}{10}{11}{12}{13}", n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,d1,d2 );
    return retorno;
};

project.SendInfoToLog(string.Format(@"pontuado == true: {0}", GetData(true)),true );
project.SendInfoToLog(string.Format(@"pontuado == false: {0}", GetData(false)),true );
Посмотреть вложение 88632
Этот вариант работает идеально! :ah:
Кнопочка благодарности в вашей подписи к сожалению не работает, поэтому большое вам Спасибо) :bp:
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 788
Благодарностей
2 454
Баллы
113
Этот вариант работает идеально! :ah:
Кнопочка благодарности в вашей подписи к сожалению не работает, поэтому большое вам Спасибо) :bp:
Вы мне ничего не должны - на форуме люди друг другу помогают бесплатно.
Хорошего вечера!
 

Кто просматривает тему: (Всего: 2, Пользователи: 0, Гости: 2)