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

Строка: Распечатать на экране по отдельности все цифры заданного числа. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
Antoja
Сообщений: n/a
29.06.2012, 10:11     Строка: Распечатать на экране по отдельности все цифры заданного числа. #1
Задано целое положительное число n. Распечатать на экране по отдельности все его цифры. Например, дано 1253, распечатываем:
1
2
5
3
Как это сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.06.2012, 10:11     Строка: Распечатать на экране по отдельности все цифры заданного числа.
Посмотрите здесь:

Функция, переставляющая цифры заданного целого числа в обратном порядке C++
Распечатать все числа от 1 до N, у которых остатки от деления на число Z не превышают числа M. C++
C++ Распечатать все числа от 1 до N
C++ Дано натуральное число n (n <= 9999). Учитывая все четыре цифры числа, определить, правильно, что оно содержит: все разные цифры
C++ Удалить все цифры из заданного слова и подсчитать количество изъятий
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Peperovich
43 / 43 / 4
Регистрация: 17.05.2011
Сообщений: 162
29.06.2012, 10:20     Строка: Распечатать на экране по отдельности все цифры заданного числа. #2
В программе обьяви как строку, а не как целое число и потом по символьно выведи))
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
29.06.2012, 10:23     Строка: Распечатать на экране по отдельности все цифры заданного числа. #3
Antoja,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
int main()
{
    vector<int> vInt;
    int value = 1253, i = 0;
 
    while (value)
    {
        i = value % 10;
        vInt.push_back(i);
        value /= 10;
    }
 
    copy(vInt.rbegin(), vInt.rend(), ostream_iterator<int>(cout, "\n"));
 
    return 0;
}
или как вариант

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int main()
{
    char symb;
 
    while((symb = getchar()) != EOF)
    {
        putchar(symb);
        cout << endl;
    }
 
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.06.2012, 10:26     Строка: Распечатать на экране по отдельности все цифры заданного числа. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
 
void print_digits(const int value)
{
   size_t count = static_cast<size_t>(log10(value));
   for (int i = count; i >= 0; --i)
   {
      std::cout << static_cast<int>(value / pow(10, i)) % 10 <<  std::endl;
   }
}
 
int main()
{
   print_digits(12345);
}
http://liveworkspace.org/code/7edc90...18ce11c8cf9119
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
29.06.2012, 10:31     Строка: Распечатать на экране по отдельности все цифры заданного числа. #5
Цитата Сообщение от Peperovich Посмотреть сообщение
В программе обьяви как строку, а не как целое число и потом по символьно выведи))
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include "string"
 
using namespace std;
 
int main()
{
    string n;
    cout << "please, enter n = ";
    cin >> n;
    for(int i = 0; i < n.length(); i++)
    {
        cout << n[i] << endl;
    }
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
29.06.2012, 10:32     Строка: Распечатать на экране по отдельности все цифры заданного числа. #6
Цитата Сообщение от Antoja Посмотреть сообщение
Задано целое положительное число n. Распечатать на экране по отдельности все его цифры. Например, дано 1253, распечатываем:
1
2
5
3
Как это сделать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
int main()
{
    int num;
    cout<<"Enter number : ";
    cin>>num;
    do
    {
        cout<<(num % 10)<<endl;
    }
    while(0  < (num = num / 10));
    system("pause");
    return 0;
}

Не по теме:

PS:Если честно тошнит уже от подобного рода задач, включайте поиск - это задание уже 1000-чу раз мелькало на форуме!

Миниатюры
Строка: Распечатать на экране по отдельности все цифры заданного числа.  
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.06.2012, 10:44     Строка: Распечатать на экране по отдельности все цифры заданного числа. #7
-=ЮрА=-, Решение не соответствует условию)
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
29.06.2012, 10:48     Строка: Распечатать на экране по отдельности все цифры заданного числа. #8
-=ЮрА=-, выводит код твой в обратном порядке. Прямой порядок нужен.
Antoja
Сообщений: n/a
29.06.2012, 11:18     Строка: Распечатать на экране по отдельности все цифры заданного числа. #9
Спасибо вам огромное!!!!)
-=ЮрА=-
Заблокирован
Автор FAQ
29.06.2012, 15:36     Строка: Распечатать на экране по отдельности все цифры заданного числа. #10
В заключение приведу что-либо отличное от предложенных здесь вариантов решений. Ниже безитераторный, безмассивный и безстепенной вариант печати разрядов числа в обратном и прямом порядке.
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>
using namespace std;
 
int main()
{
    cout<<"Enter number : ";
    int num;cin>>num;
    int buf = 0;
    cout<<"digits int number in reverse order\n";
    do
    {
        buf = buf*10 + (num % 10);
        cout<<(buf % 10)<<endl;
    }
    while(0  < (num = num / 10));
    cout<<"digits int number in forward order\n";
    do
    {
        cout<<(buf % 10)<<endl;
    }
    while(0  < (buf = buf / 10));
    system("pause");
    return 0;
}
Миниатюры
Строка: Распечатать на экране по отдельности все цифры заданного числа.  
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
29.06.2012, 15:49     Строка: Распечатать на экране по отдельности все цифры заданного числа. #11
Как вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <sstream>
#include <iterator>
#include <algorithm>
#include <string>
 
 
void print_digits(int number) {
   std::ostringstream oss;
   oss << number;
   std::string const& str = oss.str();
   std::copy(str.begin(), str.end(), std::ostream_iterator<std::string::value_type>(std::cout, "\n"));
}
 
 
int main() {
   print_digits(12345);
}
http://liveworkspace.org/code/852d2d...3df98d3ac08cc4
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.06.2012, 18:22     Строка: Распечатать на экране по отдельности все цифры заданного числа. #12
Кстати, тоже вариант.

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <iostream>
 
enum order
{
   FORWARD,
   REVERSAL
};
 
template<int N>
struct DigitsCount
{
   static constexpr int value = 1 + DigitsCount<N / 10>::value;
};
 
template<>
struct DigitsCount<0>
{
   static constexpr int value = 0;
};
 
template<int N, int Count>
struct CurrentDigit
{
   static constexpr int value = CurrentDigit<N / 10, Count - 1>::value;
};
 
template<int N>
struct CurrentDigit<N, 1>
{
   static constexpr int value = N % 10;
};
 
template<int N, int Count, int Order>
struct PrintDigits
{
   static void apply();
};
 
template<int N, int Count>
struct PrintDigits<N, Count, FORWARD>
{
   static void apply()
   {
      std::cout << CurrentDigit<N, Count>::value;
      PrintDigits<N, Count - 1, FORWARD>::apply();
   }
};
 
template<int N>
struct PrintDigits<N, 0, FORWARD>
{
   static void apply() { std::cout << std::endl; }
};
 
template<int N>
struct PrintDigits<N, 0, REVERSAL>
{
   static void apply()
   {
      std::cout << N % 10;
      PrintDigits<N / 10, 0, REVERSAL>::apply();
   }
};
 
template<>
struct PrintDigits<0, 0, REVERSAL>
{
   static void apply() { std::cout << std::endl; }
};
 
template<int N>
void print_digits()
{
   PrintDigits<N, DigitsCount<N>::value, FORWARD>::apply();
}
 
template<int N>
void print_digits_reversal()
{
   PrintDigits<N, 0, REVERSAL>::apply();
}
 
int main()
{
   constexpr int value = 123456789;
   print_digits<value>();
   print_digits_reversal<value>();
}
http://liveworkspace.org/code/bbabc2...f12ae6a8da280e
ЛетающийЕнот
88 / 67 / 12
Регистрация: 28.06.2012
Сообщений: 161
29.06.2012, 18:30     Строка: Распечатать на экране по отдельности все цифры заданного числа. #13
ForEveR, стоит ли комбайном решать простую задачу?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.06.2012, 18:38     Строка: Распечатать на экране по отдельности все цифры заданного числа. #14
ЛетающийЕнот, Нет, я ведь не предлагаю его использовать) Просто захотелось вспомнить метапрограммирование, вот и написал вариант.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.06.2012, 20:56     Строка: Распечатать на экране по отдельности все цифры заданного числа.
Еще ссылки по теме:

C++ Вывести на экран все элементы заданного столбца матрицы большие заданного числа
Удалить из заданного предложения все слова, где встречаются цифры C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
29.06.2012, 20:56     Строка: Распечатать на экране по отдельности все цифры заданного числа. #15
Думаю чтобы полностью исчерпать задание ещё уместно использовать возможности двусвязного списка
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
#include <iostream>
using namespace std;
 
struct Node
{
    int digit;
    Node * next;
    Node * prev;
};
 
int main()
{
    cout<<"Enter number : ";
    int num;cin>>num;
    Node * beg = new Node;
    Node * ptr = beg;
    Node * end = ptr;
    beg->prev  = NULL;
    for(ptr->digit = (num % 10); 0  < (num = num / 10); ptr->digit = (num % 10))
    {
        ptr->next = new Node;
        (ptr->next)->prev = ptr;
        ptr = ptr->next;
        ptr->next = NULL;
        end       = ptr;
    }
    cout<<"digits int number in forward order\n";
    for(ptr = end; ptr != NULL; ptr = ptr->prev)
        cout<<ptr->digit<<endl;
    cout<<"digits int number in reverse order\n";
    for(ptr = beg; ptr != NULL; ptr = ptr->next)
        cout<<ptr->digit<<endl;
    system("pause");
    return 0;
}
Миниатюры
Строка: Распечатать на экране по отдельности все цифры заданного числа.  
Yandex
Объявления
29.06.2012, 20:56     Строка: Распечатать на экране по отдельности все цифры заданного числа.
Ответ Создать тему
Опции темы

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