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

Разложение числа на цифры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 177
01.10.2012, 17:53     Разложение числа на цифры #1
Проверить истинность высказывания: "Цифры данного трехзначного числа образуют возрастающую или убывающую последовательность".
Интересует собственно разложение и его способы. Можно ли разложить в массив и потом уже работать с элементами? Или же проще присваивать делением?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
01.10.2012, 18:04     Разложение числа на цифры #2
Можно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
int main() 
{  
    int number = 123; 
    int st = 100; 
 
    while(number) 
    { 
        std::cout << number / st << " "; 
        number %= st; 
        st = st / 10; 
    } 
}
valeriikozlov
Эксперт C++
 Аватар для valeriikozlov
4660 / 2486 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
01.10.2012, 22:15     Разложение числа на цифры #3
можно и так и так:
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
#include <iostream>
using namespace std;
 
int main()
{
    int n;
    cout<<"n= ";
    cin>>n;
    bool fl1=true, fl2=true;
    int t1=10, t2=-1;
    while(n)
    {
        if(n%10<=t2)
            fl2=false;
        if(n%10>=t1)
            fl1=false;
        t2=t1=n%10;
        n/=10;
    }
    if(fl1)
        cout<<"Vozr"<<endl;
    if(fl2)
        cout<<"Ub"<<endl;
    return 0;
}
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
02.10.2012, 08:45     Разложение числа на цифры #4
Если нужна проверка на строгое возрастание или убывание, то можно так:
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>
 
int Check(unsigned long n)
{
   unsigned char a, b, flag;
   if (n < 10)
      return 0;
   b = n % 10; n /= 10;
   a = n % 10; n /= 10;
   flag = (a < b);
   while (n && ((a < b) == flag))
   {
      b = a;
      a = n % 10;
      n /= 10;
   }
   return (a < b) == flag;
}
 
int main()
{
   std::cout << (Check(123) ? "yes" : "no");
   return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
02.10.2012, 12:28     Разложение числа на цифры #5
Цитата Сообщение от sergey_viper Посмотреть сообщение
"Цифры данного трехзначного числа образуют возрастающую или убывающую последовательность".
sergey_viper, держи решение для 3-х значных чисел
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
#include <iostream>
using namespace std;
 
int main()
{
    int num = 0;
    while(true)
    {
        //Защищённый ввод + проверка что число в диапазоне [100;999]
        do
        {
            cout<<"Enter num : ";
            if(!(cin>>num))
            {
                cin.clear();
                cin.sync();
                cout<<"Incorrect input"<<endl;
                num = 0;
            }
            else
            if((num < 99 || 999 < num))
                cout<<"Value must be in interval [100;999]"<<endl;
        }
        while((num < 99 || 999 < num));
        if(num % 10 < (num / 10) % 10 && (num / 10) % 10 < (num / 100) % 10)
            cout<<"Decreasing digit order"<<endl;
        else
        if(num % 10 > (num / 10) % 10 && (num / 10) % 10 > (num / 100) % 10)
            cout<<"Increasing digit order"<<endl;
        else
            cout<<"Digits of number not contain sequence"<<endl;
    }
    return 0;
}
Миниатюры
Разложение числа на цифры  
Yandex
Объявления
02.10.2012, 12:28     Разложение числа на цифры
Ответ Создать тему
Опции темы

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