Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
#1

Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. - C++

18.12.2012, 17:07. Просмотров 1725. Ответов 13
Метки нет (Все метки)

Цифры числа слева направо
Дано натуральное число N. Выведите все его цифры по одной, в обычном порядке, разделяя их пробелами или новыми строками.
При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется). Разрешена только рекурсия и целочисленная арифметика.

Вот такой код реализовал
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
#include <iostream>
#include <math.h>
#include <stdio.h>
using namespace std;
void rekurs(int k);
void main()
{
int k, max=0;
printf("Vvedite k \n");
scanf("%d", &k);
printf("%d \n",rekurs(k));
system("pause");
}
int rekurs(int k)
{
    if(k!=0)
    {
    return k%10,k/10;
    }
    else
    {
        return 0;
    }
}
Что не так
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 17:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. (C++):

Рекурсия. Дано натуральное число N. Выведите все его цифры по одной, в обычном порядке, разделяя их пробелами или новыми строками - C++
Привет! Начал изучать рекурсию на с++, прочитал несколько статей и понял, что ничего не понял:) Нашел несколько заданий, вот одно из них:...

дано натуральное число N. Введите все цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками. - C++
дано натуральное число N. Введите все цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками. При решении этой...

Дано целое число. Вывести набор символов, содержащий цифры этого числа в обычном и обратном порядке - C++
Дано целое число. Вывести набор символов , содержащий цифры этого числа в обычном и обратном порядке. Помогите написать, сроки поджимают...

Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае. - C++
пробовала сделать ,но выдаёт ошибки я не понимаю,что он требует ТЕКСТ ЗАДАЧИ. Даны два целых числа A и В (каждое в отдельной...

Вывести три числа в порядке возрастания разделяя запятыми - C++
здравствуйте,только вчера начал изучать c++ по книге Страуструпа(для новичков) помогите пожалуйста решить задачку,до меня пока туговато...

Вывести все цифры числа по одной, в обратном порядке - C++
Дано натуральное число N. Выведите все его цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками.

13
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:12 #2
Цитата Сообщение от kolokol Посмотреть сообщение
return k%10,k/10;
- ошибка
0
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:13  [ТС] #3
А как надо
0
-=ЮрА=-
18.12.2012, 17:13
  #4

Не по теме:

Ща накидаю проект с нуля...

0
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:14  [ТС] #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

Ща накидаю проект с нуля...

А тут можно как нить, доработать.
0
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:19 #6
Вот так на мой взгяд норм будет
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
#include <iostream>
using namespace std;
 
void RekursSplit(int val);
 
int main()
{
    int val;
    while(true)
    {
        cout<<"Enter int : ";
        if(!(cin>>val))
        {
            cout<<"Incorrect input"<<endl;
            cin.clear();
            cin.sync();
        }
        else
        RekursSplit(val);
    }
    return 0;
}
 
void RekursSplit(int val)
{
    if(val < 0)//Избавляемся от отрицательных чисел
        val *= - 1;
    cout<<val % 10<<" ";
    if(val /= 10)
        RekursSplit(val);
    else
        cout<<endl;
}
1
Миниатюры
Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками.  
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:20  [ТС] #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вот так на мой взгяд норм будет
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
#include <iostream>
using namespace std;
 
void RekursSplit(int val);
 
int main()
{
    int val;
    while(true)
    {
        cout<<"Enter int : ";
        if(!(cin>>val))
        {
            cout<<"Incorrect input"<<endl;
            cin.clear();
            cin.sync();
        }
        else
        RekursSplit(val);
    }
    return 0;
}
 
void RekursSplit(int val)
{
    if(val < 0)//Избавляемся от отрицательных чисел
        val *= - 1;
    cout<<val % 10<<" ";
    if(val /= 10)
        RekursSplit(val);
    else
        cout<<endl;
}
спасибо)))
0
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:22 #8
Цитата Сообщение от kolokol Посмотреть сообщение
А тут можно как нить, доработать.
- иногда бывает люди на столько неверно напишут, либо настолько на суржике, что лучше показать как надо а не править заведомо код который всё равно плоховат (прошу не вспринимать как личную обиду - я пишу в общем).
Собственно не вижу проблем переставить внутренности моего RekyrsSplit в твою
Цитата Сообщение от kolokol Посмотреть сообщение
void rekurs(int k);
Ещё добавлю, что в качестве бонуса предложенный мной проект позволяет производить постоянный ввод, а также вводить некоректные числа, скажем "по запаре ввести букву" (программа не обломится). Если захочешь потом расскажу, что в твоём коде вынудило меня полностью его отбросить
0
Миниатюры
Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками.  
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:26  [ТС] #9
будем учиться, с рекурсией не лады((( подскажешь де лучше описанна она.
0
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:27 #10
Цитата Сообщение от kolokol Посмотреть сообщение
подскажешь де лучше описанна она.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
void RekursSplit(int val)
{
* * if(val < 0)//Избавляемся от отрицательных чисел
* * * * val *= - 1;
* * cout<<val % 10<<" ";
* * if(val /= 10)
* * * * RekursSplit(val);
* * else
* * * * cout<<endl;
}
- Красным рекурсия - т.е вызов функции самой себя
0
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:28  [ТС] #11
аааа въехал. Мы сначала выводим остатки числа потом если оно на цело не делится мы выходим.
0
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:31 #12
Цитата Сообщение от kolokol Посмотреть сообщение
будем учиться, с рекурсией не лады
- По честному я сам в 2002-м, на первом курсе, думал что рекурсию придумали идиоты чтобы путать люд с норм логикой, так что нелады не только у тебя были с ней Суть рекурсии - функция вызывает в своём теле саму себя и всё. Причём такая штука небезопасна, если не применять условия останова либо прерывания рекурсии (вот скажем не напиши я
Цитата Сообщение от kolokol Посмотреть сообщение
if(val /= 10)
- этого условия - программа висела бы в бесконечном цикле). Собственно рекурсия классная вещь, но юзать её надо разумно и там где без неё никак.
Любая рекурсия может быть заменена циклом

Добавлено через 40 секунд
Цитата Сообщение от kolokol Посмотреть сообщение
аааа въехал. Мы сначала выводим остатки числа потом если оно на цело не делится мы выходим.
- угу
0
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:32  [ТС] #13
спасибо вот теперь понял на данной проге. Благодарю))
0
integer11
Нарушитель
1 / 1 / 0
Регистрация: 29.10.2016
Сообщений: 109
12.12.2016, 06:40 #14
в 5 и 6 строке вместо void поставь int
0
12.12.2016, 06:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2016, 06:40
Привет! Вот еще темы с ответами:

Найти все четные четырехзначные числа, цифры которых следуют в порядке возрастания или убывания - C++
Здраствуйте, помогите сделать лабораторную, программирование мне не понадобиться так что не хочу забивать этим голову, зарание спасибо. ...

Выведите все цифры числа N по одной, в обратном порядке, разделяя их пробелами или новыми строками - C (СИ)
4. Дано натуральное число N. Выведите все его цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками. При решении...

Дано натуральное число N. Выведите все его цифры по одной, в обычном порядке, разделяя их пробелами или новыми - Turbo Pascal
Дано натуральное число N. Выведите все его цифры по одной, в обычном порядке, разделяя их пробелами или новыми строками. При решении...

Выведите цифры числа в столбик и в обратном порядке - Pascal ABC
Введите четырехзначное число. Выведите его цифры а) в столбик; в обратном порядке.


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

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

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