Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Nastya_1019
0 / 0 / 0
Регистрация: 06.05.2014
Сообщений: 6
#1

Рекурсия: вычисление суммы цифр в строке - C++

22.05.2014, 18:01. Просмотров 523. Ответов 16
Метки нет (Все метки)

Помогите пожалуйста написать программу!
http://www.cyberforum.ru/cpp-beginners/thread199412.html
Разработать рекурсивную функцию, возвращающую значение для вычисления суммы цифр в строке. С помощью данной функции определить, в каком из двух предложений сумма цифр больше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2014, 18:01
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Рекурсия: вычисление суммы цифр в строке (C++):

Вычисление суммы цифр в строке
нужно решить на С++ Дана строка, состоящая из символов, каждый из которых...

Рекурсия: вычисление суммы ряда
Тема: Рекурсивные функции. используя механизм рекурсии; Вычислить для...

Рекурсия: вычисление суммы ряда 1/n!
Здравствуйте) Есть задача, чтобы сделать её с рекурсией и без. Вычислить...

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

Вычисление суммы десятичных цифр числа
Преобразовать данный код с использованием указателей. #include...

16
newbie666
Заблокирован
22.05.2014, 18:08 #2
рекурсия, собственно как и применение в С++ оператора goto говорит об очень дерьмовом стиле программирования
0
Winorun
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
22.05.2014, 18:15 #3
strMasInput -- входная строка;
C++
1
2
3
4
int sum(char *strMasInput, int i){
if(strMasInput[i]==0)return 0;
return sum(strMasInput, i)+strMasInput[i]-'0';
}
Добавлено через 2 минуты
Цитата Сообщение от newbie666 Посмотреть сообщение
рекурсия, собственно как и применение в С++ оператора goto говорит об очень дерьмовом стиле программирования
Я думаю это лаба т.ч. на все воля препода. Если программа реальна, пресоеденюсь рекурсию лудше не использовать.

Добавлено через 1 минуту
Цитата Сообщение от newbie666 Посмотреть сообщение
применение в С++ оператора goto говорит об очень дерьмовом стиле программирования
Фэн-Шуй не всегда прав. Есть места где без него приходится городить огород. Пример выход со второго и далее уровня цикла
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
22.05.2014, 18:17 #4
Цитата Сообщение от newbie666 Посмотреть сообщение
рекурсия,................... говорит об очень дерьмовом стиле программирования
напиши ка например функцию заливки области без рекурсии
2
newbie666
Заблокирован
22.05.2014, 18:18 #5
Цитата Сообщение от ValeryS Посмотреть сообщение
напиши ка например функцию заливки области без рекурсии
будет задача передо мной стоять - напишу. просто так - лень ))
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
22.05.2014, 18:20 #6
Цитата Сообщение от Winorun Посмотреть сообщение
Пример выход со второго и далее уровня цикла
давно уже решено
отдельная функция
Цитата Сообщение от Winorun Посмотреть сообщение
int sum(char *strMasInput, int i){
if(strMasInput[i]==0)return 0;
return sum(strMasInput, i)+strMasInput[i]-'0';
}
я правильно понимаю что будет бесконечная рекурсия
ни strMasInput ни i не меняются
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
22.05.2014, 18:22 #7
Цитата Сообщение от newbie666 Посмотреть сообщение
будет задача передо мной стоять - напишу.
давай давай
есть рекурсивные алгоритмы, где не использование рекурсии,или не возможно или дорогого стоит
рекурсия не есть аналог цикла
0
Winorun
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
22.05.2014, 18:22 #8
Блин, return sum(strMasInput, i++)+strMasInput[i]-'0';
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
22.05.2014, 18:24 #9
Цитата Сообщение от Winorun Посмотреть сообщение
Блин, return sum(strMasInput, i++)+strMasInput[i]-'0';
может все таки ++i
а чтобы не было разночтений проще i+1
0
Winorun
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
22.05.2014, 18:27 #10
Кстати [задумчиво] можно деревья вспомнить

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
может все таки ++i
Ты Прав
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
22.05.2014, 18:31 #11
Цитата Сообщение от Winorun Посмотреть сообщение
Ты Прав
нет не прав
не правильно будет вычисляться
strMasInput[i] i то увеличится
так что единственный вариант без побочных эффектов
C++
1
return sum(strMasInput, i+1)+strMasInput[i]-'0';
0
Kuzia domovenok
2206 / 1975 / 439
Регистрация: 25.03.2012
Сообщений: 6,919
Записей в блоге: 1
22.05.2014, 18:33 #12
Цитата Сообщение от newbie666 Посмотреть сообщение
будет задача передо мной стоять - напишу. просто так - лень ))
а выпендриваться на рекурсию не лень?
0
Winorun
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
22.05.2014, 18:35 #13
Цитата Сообщение от ValeryS Посмотреть сообщение
единственный вариант
Хм,
C++
1
return strMasInput[i]+sum(strMasInput, ++i)-'0';
[Шутки ради]
0
ValeryS
Модератор
7124 / 5392 / 669
Регистрация: 14.02.2011
Сообщений: 18,201
22.05.2014, 18:38 #14
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а выпендриваться на рекурсию не лень?


Добавлено через 1 минуту
Winorun,
хрен знает точки следования как пройдут, UB возможно
0
Kuzia domovenok
2206 / 1975 / 439
Регистрация: 25.03.2012
Сообщений: 6,919
Записей в блоге: 1
22.05.2014, 18:48 #15
Цитата Сообщение от Winorun Посмотреть сообщение
return strMasInput[i]+sum(strMasInput, ++i)-'0';
а зачем тут вообще i++, если i+1 написать и безопаснее, и короче, и понятнее?
Цитата Сообщение от ValeryS Посмотреть сообщение
а чтобы не было разночтений проще i+1
ах да, уже сказали...
0
zhadetskij
0 / 0 / 2
Регистрация: 19.09.2017
Сообщений: 11
24.04.2018, 16:44 #16
Цитата Сообщение от Winorun Посмотреть сообщение
3 return sum(strMasInput, i)+strMasInput[i]-'0';
пожалуйста обьясните, зачем отнимать символ нуля ('0') ?
0
Winorun
39 / 39 / 8
Регистрация: 03.05.2013
Сообщений: 178
24.04.2018, 20:24 #17
Нам нужно перевести символы из которой состоит стока в числа чтобы сложить, так как строка закодирована в ascii то самый простой способ отнять 0x30 то есть '0'.

https://ru.wikipedia.org/wiki/ASCII
https://rsdn.org/article/cpp/cstr.xml
1
24.04.2018, 20:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2018, 20:24
Привет! Вот еще темы с решениями:

Вычисление равенства суммы цифр заданного числа!
Вот задача: Переменной Т присвоить true если сумма единичных и десятичных цифр ...

Вычисление количества цифр в строке
для вычисления количества цифр в строке;с помощью данной функции определить,в...

Вычисление суммы чисел, образованных цифрами в строке
я уже часа 2 бьюсь( не знаю как это сделать, тапками не закидывайте, выложила...

В матрице разместить все строки по возрастанию суммы цифр в каждой строке
В двумерном массиве разместить все строки по возрастанию суммы цифр в каждой...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru