Сумма цифр, получение неправильного ответа

Mrinaal спросил: 28 марта 2018 в 04:45 в: vbscript

Я использовал querystring для приема числа в моем классическом asp-коде, а затем программа выведет сумму цифр номера.

<%
dim n,d,sum
sum = 0
d = 0
n = request.querystring("n")  //Taking value from querystring
while n<>0
d = n mod 10
response.write("<br>"&d)
sum = sum + d``
n = Cint(n/10)
wend
response.write("<br>Sum of digits of "&request.querystring("n")&" is : 
"&sum)
%>

Но проблема в том, что он делает не показывать правильные ответы для нескольких значений, например, например. n = 91 .... тогда выход будет 11, но для n = 123 ... вывод будет 6.pls help.

2 ответа

ThatGuyInIT ответил: 29 марта 2018 в 12:45

Может быть проще рассматривать n как строку, которая на самом деле является символьным массивом. Поскольку строка является массивом символов, мы можем циклически проходить через массив и суммировать каждое значение.

Dim n, d, sum
sum = 0
d = 0
n = Request.QueryString("n")
If IsNumeric(n) Then
    For i = 1 To Len(n)
        d = CInt(Mid(n,i,1))
        Response.Write("<br />" & d)
        sum = sum + d
    Next
    Response.Write("<br />Sum of digits of " & n & " is : " & sum)
End If
Regis Desrosiers ответил: 28 марта 2018 в 08:52
Хороший ответ. Могут ли комментарии начинаться с // в классическом asp или с '?
ThatGuyInIT ответил: 28 марта 2018 в 09:37
Только ' для комментариев с VBScript; тем не менее, вы можете использовать JavaScript как язык с классическим ASP.
Mrinaal ответил: 28 марта 2018 в 04:33
Спасибо тебе большое, чувак .. ты потрясающий!
ThatGuyInIT ответил: 29 марта 2018 в 12:48
нп, можешь принять мой ответ?
Lankymart ответил: 29 марта 2018 в 11:23
@ThatGuyInIT на самом деле вы не можете использовать JavaScript, который является распространенным заблуждением. Вы можете использовать JScript, хотя это язык активных сценариев, разработанный Microsoft и основанный на более старой версии ECMAScript.
Есть решение
Mrinaal ответил: 30 марта 2018 в 12:20

Нужно всего лишь сделать одно изменение в коде, т.е. использовать оператор \ вместо /, когда вы уменьшаете число ... .

т.е. вместо n = CInt (n / 10) используйте n = n \ 10

, поэтому код будет работать как масло:

<%
dim n,sum,d
sum = 0
n = request.querystring("n")    'taking value from querystringwhile n <> 0
d = n mod 10
sum = sum +d
n = n\10                       'using \ for integer division
wend
response.write("Sum of digits of : "&request.querystring("n")&" is = "&sum)
%>

Для тех, кто не понимает, что только что произошло, см. ниже:

  1. Оператор /: выполняет плавающее деление.
  2. Оператор \: выполняет целочисленное деление.

Вот почему я не получил правильные результаты. Надеюсь, это поможет!