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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:07     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #1
Цифры числа слева направо
Дано натуральное число 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;
    }
}
Что не так
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2012, 17:07     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками.
Посмотрите здесь:

Найти все четные четырехзначные числа, цифры которых следуют в порядке возрастания или убывания C++
Вывести все цифры числа по одной, в обратном порядке C++
C++ Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
C++ Выведите все простые множители числа в порядке возрастания с учетом кратности
C++ Выведите все числа от A до B включительно, в порядке возрастания
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:12     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #2
Цитата Сообщение от kolokol Посмотреть сообщение
return k%10,k/10;
- ошибка
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:13  [ТС]     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #3
А как надо
-=ЮрА=-
18.12.2012, 17:13
  #4

Не по теме:

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

kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:14  [ТС]     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

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

А тут можно как нить, доработать.
-=ЮрА=-
Заблокирован
Автор 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;
}
Миниатюры
Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками.  
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;
}
спасибо)))
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:22     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #8
Цитата Сообщение от kolokol Посмотреть сообщение
А тут можно как нить, доработать.
- иногда бывает люди на столько неверно напишут, либо настолько на суржике, что лучше показать как надо а не править заведомо код который всё равно плоховат (прошу не вспринимать как личную обиду - я пишу в общем).
Собственно не вижу проблем переставить внутренности моего RekyrsSplit в твою
Цитата Сообщение от kolokol Посмотреть сообщение
void rekurs(int k);
Ещё добавлю, что в качестве бонуса предложенный мной проект позволяет производить постоянный ввод, а также вводить некоректные числа, скажем "по запаре ввести букву" (программа не обломится). Если захочешь потом расскажу, что в твоём коде вынудило меня полностью его отбросить
Миниатюры
Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками.  
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:26  [ТС]     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #9
будем учиться, с рекурсией не лады((( подскажешь де лучше описанна она.
-=ЮрА=-
Заблокирован
Автор 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;
}
- Красным рекурсия - т.е вызов функции самой себя
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:28  [ТС]     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #11
аааа въехал. Мы сначала выводим остатки числа потом если оно на цело не делится мы выходим.
-=ЮрА=-
Заблокирован
Автор FAQ
18.12.2012, 17:31     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #12
Цитата Сообщение от kolokol Посмотреть сообщение
будем учиться, с рекурсией не лады
- По честному я сам в 2002-м, на первом курсе, думал что рекурсию придумали идиоты чтобы путать люд с норм логикой, так что нелады не только у тебя были с ней Суть рекурсии - функция вызывает в своём теле саму себя и всё. Причём такая штука небезопасна, если не применять условия останова либо прерывания рекурсии (вот скажем не напиши я
Цитата Сообщение от kolokol Посмотреть сообщение
if(val /= 10)
- этого условия - программа висела бы в бесконечном цикле). Собственно рекурсия классная вещь, но юзать её надо разумно и там где без неё никак.
Любая рекурсия может быть заменена циклом

Добавлено через 40 секунд
Цитата Сообщение от kolokol Посмотреть сообщение
аааа въехал. Мы сначала выводим остатки числа потом если оно на цело не делится мы выходим.
- угу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2012, 17:32     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками.
Еще ссылки по теме:

C++ дано натуральное число N. Введите все цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками.
РЕКУРСИЯ-----дано натуральное число N. выведите все цифры по одной, в обратном порядке, разделяя их пробелами или новыми строками. При решении этой за C++
Рекурсия. Дано натуральное число N. Выведите все его цифры по одной, в обычном порядке, разделяя их пробелами или новыми строками C++

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

Или воспользуйтесь поиском по форуму:
kolokol
5 / 5 / 0
Регистрация: 04.10.2012
Сообщений: 48
18.12.2012, 17:32  [ТС]     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками. #13
спасибо вот теперь понял на данной проге. Благодарю))
Yandex
Объявления
18.12.2012, 17:32     Выведите цифры числа по одной, в обычном порядке, разделяя их пробелами или новыми строками.
Ответ Создать тему
Опции темы

Текущее время: 23:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru