Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 46

Функция формирующие массив десятичных цифр целого числа

02.01.2021, 15:48. Показов 1878. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написать функцию которая принимает вектор целых
чисел и возвращает новый вектор, состоящий из
цифр входного вектора (Использовать циклы запрещено).
Пример:
input: 123 234 34 56 76 23
output: 1 2 3 2 3 4 3 4 5 6 7 6 2 3
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.01.2021, 15:48
Ответы с готовыми решениями:

Вывести количество десятичных цифр, необходимых для представления заданного целого числа
Ввести целое N. Вывести количество десятичных цифр, необходимых для представления этого числа. Добавлено через 23 часа 13 минут ...

Функция определяющая количество четных десятичных цифр числа
Помогите, пожалуйста, отредактировать код. Он считывает только одну цифру при вводе, а не 10. Задача: В этой задаче вы должны написать...

Сформировать массив десятичных цифр числа А. Элементы массива цифр сдвинуть циклически влево на 1 позицию
дано целое десятичное число А. Сформировать массив десятичных цифр числа А. Элементы массива цифр сдвинуть циклически влево на 1 позицию ....

11
фрилансер
 Аватар для Алексей1153
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,072
02.01.2021, 16:18
Лучший ответ Сообщение было отмечено Kingq как решение

Решение

Kingq, так считается без циклов?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <vector>
#include <iostream>
#include <algorithm>
 
void append(std::vector<int>& dst,const int value)
{
    if(!value)return;
    dst.emplace_back(value%10);
    append(dst,value/10);
}
 
std::vector<int> transform(const std::vector<int>& src)
{
    std::vector<int> dst;
    std::for_each(src.rbegin(),src.rend(),[&dst](auto value){append(dst,value);});
    std::reverse(dst.begin(),dst.end());
    return dst;
}
 
int main()
{
    std::vector<int> src={123,234,34,56,76,23};
    std::for_each(src.begin(),src.end(),[](auto value){std::cout<<value<<' ';});
    std::cout<<'\n';
    auto dst=transform(src);
    std::for_each(dst.begin(),dst.end(),[](auto value){std::cout<<value<<' ';});
    return 0;
}
Code
1
2
123 234 34 56 76 23 
1 2 3 2 3 4 3 4 5 6 7 6 2 3
Добавлено через 6 минут
подправил
2
0 / 0 / 0
Регистрация: 22.11.2020
Сообщений: 46
02.01.2021, 19:25  [ТС]
Да, спасибо

Добавлено через 1 час 28 минут
Но я не совсем понимаю вот эту строчку - for_each(src.rbegin(),src.rend(),[&dst](auto value){append(dst,value);});
Зачем нужно передавать?
0
фрилансер
 Аватар для Алексей1153
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,072
02.01.2021, 20:10
Kingq, это захват в лямбду по ссылке. Иначе не будет доступа к этой локальной переменной внутри лямбды
1
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
02.01.2021, 23:13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <vector>
#include <type_traits>
#include <limits>
#include <algorithm>
#include <iterator>
 
template <typename T>
std::enable_if_t<std::is_arithmetic_v<T>, std::vector<std::uint8_t>> to_digits(const std::vector<T>& numbers)
{
    std::vector<std::uint8_t> digits;
    digits.reserve(numbers.size() * std::numeric_limits<T>::digits10);
    std::for_each(numbers.cbegin(), numbers.cend(), [&digits](auto n) {
        std::uint8_t d[std::numeric_limits<T>::digits10];
        if (n < 0) n = -n;
        std::uint8_t l = n != 0 ? 0 : (d[0] = 0, 1);
        for ( ; n; n /= 10, ++l) d[l] = n % 10;
        do digits.push_back(d[l - 1]); while (--l);
    });
    return digits;
}
 
int main()
{
    std::vector<int> iv{ 1200, 2450, 643, -7896, 90345 };
    std::cout << "Original vector iv: ";
    std::copy(iv.cbegin(), iv.cend(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
    auto iv_digits = to_digits(iv);
    std::cout << "Digits of original vector iv: ";
    std::copy(iv_digits.cbegin(), iv_digits.cend(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    std::vector<long long> llv{ 234567, -987654321, 908070, 14253647 };
    std::cout << "Original vector llv: ";
    std::copy(llv.cbegin(), llv.cend(), std::ostream_iterator<long long>(std::cout, " "));
    std::cout << std::endl;
    auto llv_digits = to_digits(llv);
    std::cout << "Digits of original vector llv: ";
    std::copy(llv_digits.cbegin(), llv_digits.cend(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Kingq Посмотреть сообщение
Использовать циклы запрещено
Тогда решить задачу невозможно!

Цитата Сообщение от Алексей1153 Посмотреть сообщение
std::for_each(src.rbegin(),src.rend(),[&dst](auto value){append(dst,value);});
for_each - это самый что ни на есть классический цикл ))
1
фрилансер
 Аватар для Алексей1153
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,072
03.01.2021, 08:42
jugu, это шаблон функции ) Циклы организуются при помощи for/while/do/goto
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
03.01.2021, 09:47
Цитата Сообщение от Алексей1153 Посмотреть сообщение
то шаблон функции
Да что вы говорите?! Загляните, как выглядит этот шаблон "внутри":
C++
1
2
3
4
5
6
7
8
template<class InputIt, class UnaryFunction>
constexpr UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f)
{
    for (; first != last; ++first) {
        f(*first);
    }
    return f; 
}
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,711
Записей в блоге: 14
03.01.2021, 09:56
Как вариант (числа должны быть положительны). Цикл только для вывода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <vector>
 
using namespace std;
 
void conv_n(int k,vector <int> &v)
{
    if (k==0) return;
    conv_n(k/10,v);
    v.push_back(k%10);
}
 
void conv_v(int p, vector <int> &inp, vector <int> &res)
{
    if (p>=inp.size()) return;
    if (inp[p]==0)
    {
        res.push_back(0);
        conv_v(p+1,inp,res);
    }
    else
    {
        conv_n(inp[p],res);
        conv_v(p+1,inp,res);
    }
}
 
int main()
{
    vector <int> vinp={123,234,34,56,76,23};
    vector <int> vres;
    int n,i;
    
    conv_v(0,vinp,vres);
    n=vres.size();
    for (i=0; i<n; i++) cout << vres[i] << " ";
    
    return 0;
}
1
фрилансер
 Аватар для Алексей1153
6455 / 5657 / 1129
Регистрация: 11.10.2019
Сообщений: 15,072
03.01.2021, 12:02
jugu, это именно шаблон функции, я не ошибся. Я вызываю функцию, но цикл я при этом не использую
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
04.01.2021, 09:37
Цитата Сообщение от Алексей1153 Посмотреть сообщение
Я вызываю функцию, но цикл я при этом не использую
Вы косвенно используете цикл. Но претензии не к вам, а к горе-преподам, которые выдают такие нелепые формулировки заданий. Их задача - научить студента писать эффективные и элегантные программы, а не искать пути исключить то, что невозможно исключить.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
04.01.2021, 13:07
Цитата Сообщение от Catstail Посмотреть сообщение
Цикл только для вывода
недоработка
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <vector>
using namespace std;
 
void Print(vector <int> &v, int n) 
{    
    if (n == 0) return;   
    Print(v, n-1);
    cout << v[n-1] << " ";  
}
 
int main() 
{
    vector <int> vinp={123,234,34,56,76,23};
  
    Print(vinp,vinp.size());
 
return 0;
}
1
04.01.2021, 13:08

Не по теме:

Yetty, +100

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.01.2021, 13:08
Помогаю со студенческими работами здесь

Вычислить сумму десятичных цифр заданного целого десятичного числа
Создать проект, который позволяет вычислить сумму десятичных цифр заданного целого десятияного числа Все это сделать в windows forms

Смоделировать операцию умножения целого числа длиной до 30 десятичных цифр на действительное
1) Смоделировать операцию умножения целого числа длиной до 30 десятичных цифр на действительное число в форме +/- m.n Е K, где...

Рекурсивная функция целого типа, которая находит сумму цифр целого числа.
Пожалуйста ,помогите Написать рекурсивную функцию целого типа, которая находит сумму цифр целого числа*K, не*используя оператор цикла....

Функция суммы цифр целого числа
Подсчитать сумму цифр в целом числе Оформить в виде функции Напишите, пожалуйста, если можете

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru