Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
Antoja
1

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

29.06.2012, 10:11. Просмотров 2549. Ответов 14
Метки нет (Все метки)


Задано целое положительное число n. Распечатать на экране по отдельности все его цифры. Например, дано 1253, распечатываем:
1
2
5
3
Как это сделать?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.06.2012, 10:11
Ответы с готовыми решениями:

Получить все числа, не превышающие заданного числа n, которые делятся без остатка на все свои цифры
получить все числа не превышающие заданного числа n, которые делятся без остатка на все свои цифры.

Распечатать все простые сдвоенные числа меньшие заданного
Здравствуйте! Помогите написать программу Если p и q - простые числа и q = p+2, то они называются...

Строка: Разделите точками цифры заданного числа группами по три, начиная справа.
Помогите,пожалуйста,с программами для этих задач 1)Разделите точками цифры этого числа группами по...

Распечатать в убывающем порядке все цифры, входящие в десятичную запись натурального числа N.
Помогите сделать задач: Распечатать в убывающем порядке все цифры входящие в десятичную запись...

__________________
Помогаю в написании курсовых работ и дипломов здесь.
Записывайтесь на профессиональные курсы C++ разработчиков
14
43 / 43 / 13
Регистрация: 17.05.2011
Сообщений: 162
29.06.2012, 10:20 2
В программе обьяви как строку, а не как целое число и потом по символьно выведи))
0
145 / 67 / 14
Регистрация: 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;
}
0
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
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/... 11c8cf9119
0
1066 / 583 / 87
Регистрация: 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;
}
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-чу раз мелькало на форуме!

0
Миниатюры
Строка: Распечатать на экране по отдельности все цифры заданного числа.  
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
29.06.2012, 10:44 7
-=ЮрА=-, Решение не соответствует условию)
0
88 / 67 / 37
Регистрация: 28.06.2012
Сообщений: 161
29.06.2012, 10:48 8
-=ЮрА=-, выводит код твой в обратном порядке. Прямой порядок нужен.
0
Antoja
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;
}
2
Миниатюры
Строка: Распечатать на экране по отдельности все цифры заданного числа.  
What a waste!
1588 / 1287 / 173
Регистрация: 21.04.2012
Сообщений: 2,696
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/... 8d3ac08cc4
0
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
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/... e6a8da280e
2
88 / 67 / 37
Регистрация: 28.06.2012
Сообщений: 161
29.06.2012, 18:30 13
ForEveR, стоит ли комбайном решать простую задачу?
0
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
29.06.2012, 18:38 14
ЛетающийЕнот, Нет, я ведь не предлагаю его использовать) Просто захотелось вспомнить метапрограммирование, вот и написал вариант.
1
Заблокирован
Автор 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;
}
0
Миниатюры
Строка: Распечатать на экране по отдельности все цифры заданного числа.  
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.06.2012, 20:56

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь или здесь.

Замените все отрицательные числа на свои модули и напечатайте цифры на экране
Введите 10 отрицательных и 10 положительных цифр на клавиатуре.Замените все отрицательные числа на...

Найти все числа, не превосходящие заданного N (10<N<10000), которые делятся на все свои цифры.
как решить следующую задачу? Задача Д1. Найти все числа, не превосходящие заданного N...

Для заданного n, кратного 11, найти все числа, в десятичной записи которых использованы все десятичные цифры
Для заданного n, кратного 11, найти все числа, в десятичной записи которых использованы все...

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


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

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

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