Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/89: Рейтинг темы: голосов - 89, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
1

Вычислить, чему равна сумма цифр числа

13.05.2012, 13:20. Показов 17537. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дано натуральное число n (n ≤ 100).Чему равна сумма его цифр?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2012, 13:20
Ответы с готовыми решениями:

Дано натуральное число n. Определить, сколько парных цифр в числе n. Чему равна сумма нечетных его цифр?
Помогите! Не могу решить сложное задание в Excel Дано натуральное число n. Определить, сколько...

Равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр
Составить программу, печатающую значение TRUE, если указанное высказывание является истинным, и...

Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр
Здравствуйте, помогите пожалуйста напишите код без MsgBox (на форуме нашёл только с ним) на задачу...

Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр
Определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его...

22
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
13.05.2012, 15:13 2
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
1
2
3
4
5
6
Sub Irina()
MsgBox Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 5, 6, 7, _
    8, 9, 10, 11, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 5, 6, 7, 8, _
    9, 10, 11, 12, 13, 14, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 8, 9, 10, 11, 12, 13, 14, 15, _
    16, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 1)(InputBox("n="))
End Sub
5
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
13.05.2012, 15:18  [ТС] 3
спасибо=))))
0
Dragokas
14.05.2012, 20:34
  #4

Не по теме:

Казанский, не уж то на пальцах считал :D

0
6171 / 936 / 310
Регистрация: 25.02.2011
Сообщений: 1,367
Записей в блоге: 1
15.05.2012, 06:56 5
Лучший ответ Сообщение было отмечено как решение

Решение

Для разнообразия, классический (универсальный) вариант:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub Irina212121()
Dim n&, s&
n = Val(InputBox("n="))
Do While n > 0
    s = s + n Mod 10
    n = n \ 10
Loop
MsgBox s
End Sub
3
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
15.05.2012, 07:48 6
Лучший ответ Сообщение было отмечено как решение

Решение

тоже классика?
Visual Basic
1
2
3
4
5
6
7
8
Sub t()
  Dim n&, ns$, i%, s%
  n = Val(InputBox("n=")): ns = CStr(n)
  For i = 1 To Len(ns)
    s = s + Mid(ns, i, 1)
  Next
  MsgBox s
End Sub
пс. а Ирину жалко
3
0 / 0 / 0
Регистрация: 10.05.2012
Сообщений: 5
15.05.2012, 16:23  [ТС] 7
Цитата Сообщение от ikki_cf Посмотреть сообщение
а Ирину жалко
почему?=)
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
15.05.2012, 16:49 8
Лучший ответ Сообщение было отмечено как решение

Решение

а что сказал преподаватель?

гм... наверное, я просто не в курсе, насколько хорошо у нынешних преподавателей информатики обстоит дело с юмором.

вообще-то, у Вас несколько разные постановки задачи в заголовке темы и в самом тексте (впрочем, заголовок могли и модераторы поменять).
в заголовке - "вычислить"
а в тексте - "чему равна?"

так вот - замечательный (я не шучу!) макрос Казанского дает совершенно верный ответ на "чему равна", но не вычисляет.

макросы m-ch и мой - вычисляют.
с тем же результатом.

итого - избитую истину о том, что правильный ответ зависит от правильной постановки вопроса, таки в очередной раз побили.


пс. вполне возможно, что первый ответ в теме появился до того, как в названии темы появилось слово "вычислить".
3
Заблокирован
15.05.2012, 22:26 9
Отметить хотелось бы, что код от m-ch оптимальнее в плане работы с целыми числами (byte, integer, long),
а код от ikki_cf будет незаменим при работе с длинной арифметикой (после некоторой доработки, разумеется).
1
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
15.05.2012, 22:52 10
Цитата Сообщение от Апострофф Посмотреть сообщение
при работе с длинной арифметикой
на эту есть есть готовые решения

например
0
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
16.05.2012, 16:45 11
Лучший ответ Сообщение было отмечено как решение

Решение

Самый медленный алгоритм, который с поддачи Апострофф-а я все же вспомнил.
Просто, думаю, имеет право на существование ради саморазвития.
Visual Basic
1
2
3
4
5
6
7
8
9
Sub aa()
Dim s$, sum%, a As Byte, b() As Byte
s = CStr(InputBox("Введите число: "))
b = s
For a = 0 To UBound(b) Step 2
    sum = sum + b(a) - 48
Next
MsgBox "Сумма цифр числа " + s + " = " & sum
End Sub
3
Заблокирован
16.05.2012, 17:06 12
Цитата Сообщение от Diskretor Посмотреть сообщение
Самый медленный алгоритм
А вот в этом я не уверен!
Код с Mid`ами не должен тут выиграть, имхо...
0
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
02.11.2012, 13:48 13
Лучший ответ Сообщение было отмечено как решение

Решение

На конкурс самого медленного алгоритма
Visual Basic
1
2
3
4
5
6
7
8
Sub vv()
Dim s$
With CreateObject("scriptcontrol")
    .Language = "VBScript"
    s = InputBox("Введите число")
    MsgBox .Eval(Format(s, Replace(Space(Len(s)), " ", "@+") & 0)), , "Сумма цифр"
End With
End Sub
2
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
03.11.2012, 06:14 14
Лучший ответ Сообщение было отмечено как решение

Решение

Visual Basic
1
2
3
4
5
6
7
Sub SelectedValDigitsSumma()   'F7 in my Normal.dot
    With Selection
        .text = Format(.text, "@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ")
        InputBox .text, "Сумма цифр выделенного числа", .Calculate
    End With
    ActiveDocument.Undo 1 'убрал разбивку на цифры
End Sub
Миниатюры
Вычислить, чему равна сумма цифр числа  
2
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
03.11.2012, 06:46 15
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
.text = Format(
- да, согласен, это дает выйгрыш в медленности! Функция Format возвращает данные типа Variant, что порождает лишние преобразования. Быстрее - Format$(...)

А сумму цифр можно и вот так подсчитать:

Visual Basic
1
2
3
4
5
6
7
8
9
Function sumDig(n as long)
  if n < 0 then 
     sumDig(Abs(long))
  elseIf n < 10 then
     sumDig=n
  else
     sumDig=(n mod 10) + sumDig(n \ 10)
  end if
End function
3
Заблокирован
03.11.2012, 09:43 16
Цитата Сообщение от Catstail Посмотреть сообщение
sumDig(Abs(long))

Как-то так
Visual Basic
1
2
3
4
5
6
7
8
9
Function sumDig(n As Long)
  If n < 0 Then
    sumDig = sumDig(-n)
  ElseIf n < 10 Then
     sumDig = n
  Else
     sumDig = (n Mod 10) + sumDig(n \ 10)
  End If
End Function
или так
Visual Basic
1
2
3
4
5
6
7
Function sumDig(n As Long)
  If Abs(n) < 10 Then
     sumDig = Abs(n)
  Else
     sumDig = Abs(n Mod 10) + sumDig(n \ 10)
  End If
End Function
1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
03.11.2012, 16:58 17
Abs(long) - это явный ляп, а вот последний код менее рационален (лишние вызовы abs).
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
03.11.2012, 17:04 18
Catstail, а рекурсия для данной задачи рациональна?
(без вских намёков спрашиваю, реально интересно узнать Ваше мнение)
0
Апострофф
03.11.2012, 18:43
  #19

Не по теме:

ikki, однозначно если задача решаема за сопоставимое число действий (https://www.cyberforum.ru/post3032395.html), то я выберу вариант без рекурсии:pardon:

1
Модератор
Эксперт функциональных языков программированияЭксперт Python
36601 / 20330 / 4220
Регистрация: 12.02.2012
Сообщений: 33,644
Записей в блоге: 13
03.11.2012, 19:00 20
Цитата Сообщение от ikki Посмотреть сообщение
Catstail, а рекурсия для данной задачи рациональна?
- нет, конечно... Но уж слишком "постная" эта задача.
1
03.11.2012, 19:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2012, 19:00
Помогаю со студенческими работами здесь

Равна ли сумма двух первых цифр четырехзначного числа сумме двух последних цифр?
1. Создать программу, которая, используя пользовательское диалоговое окно (форму), выполняет...

Равна ли сумма первых двух цифр пятизначного числа, двум последним?
Равна ли сумма первых двух цифр пятизначного числа, двум последним?

Верно ли, что сумма первых двух цифр четырехзначного числа равна сумме двух последних
Составить программу, печатающую значение true, если указанное высказывание является истинным, и...

Чему равна сумма цифр числа n.
Чему равна сумма цифр числа n. Параметр n задать при опросе. помогите пожалуйста...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru