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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
#1

Определить, стоят ли цифры числа в натуральном ряду через одну - C++

11.01.2011, 20:56. Просмотров 1376. Ответов 31
Метки нет (Все метки)

Задача 4.22
Составить функцию, которая для целого числа определяет, стоят ли его цифры в натуральном ряду через одну.
В вызывающей функции main() организовать ввод целого числа N из диапазона от 1 до 9 и среди всех N-значных целых чисел найти числа, запись которых состоит из цифр, стоящих в натуральном ряду через одну. Вывести их на экран и подсчитать количество таких чисел.
В вызывающей функции main() организовать контроль ввода числа N.

Что значит цифры в натуральном ряду через одну? Приведите пример.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2011, 20:56     Определить, стоят ли цифры числа в натуральном ряду через одну
Посмотрите здесь:

C++ Программа для нахождения к-ой цифры в ряду подряд идущих натуральных чисел.
C++ Определить количество и сумму цифр в введенном натуральном числе. Введенное натуральное число представляется как единственное число, расположив цифры
Найти цифры, которые чаще всего встречаются в заданном натуральном числе N. C++
C++ Дано натуральное число n (n <= 9999). Учитывая все четыре цифры числа, определить, правильно, что оно содержит: все разные цифры
Для натурального числа определить истинность предиката «все цифры в записи числа равны» C++
C++ Проверить, что в натуральном числе встречаются цифры А и В.
Определить цифры целого числа (тип числа - целое без знака) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
11.01.2011, 22:03     Определить, стоят ли цифры числа в натуральном ряду через одну #21
или так... произведение строки умноженное на сумму столбца, на квадрат элемента все это под корнем...

для каждой из матриц.....эмм.... мдя...

Добавлено через 1 минуту
голову сломать мона.... над к математикам наверно в отдельную тему кинуть... чет я ваще никак))
Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
11.01.2011, 22:07     Определить, стоят ли цифры числа в натуральном ряду через одну #22
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
#include <iostream>
#include <vector>
#include <cmath>
 
//Составить функцию, которая для целого числа определяет, 
//стоят ли его цифры в натуральном ряду через одну.
bool ok_cufru_stoiat_cherez_odny(int someDigit)
{
   std::vector <int> digits;
   while (someDigit)
   {
      digits.push_back(someDigit%10);
      someDigit /= 10;
   }
   
   for (int i = 1; i < digits.size(); i++)
      if (digits[i-1] - digits[i] != 2) return 0;
   
   return 1;
}
//------------------------------------------------------------------------------
int main()
{
//В вызывающей функции main() организовать ввод целого числа N 
//из диапазона от 1 до 9
   int N = 10;
//В вызывающей функции main() организовать контроль ввода числа N.
   while (N < 1 || N > 9)
   {
      std::cout << "Введите цыфру от 1 до 9: ";
      std::cin >> N;
   }
//------------------------------------------------------------------------------  
//и среди всех N-значных целых чисел найти числа, запись которых 
//состоит из цифр, стоящих в натуральном ряду через одну.
//Вывести их на экран и подсчитать количество таких чисел.
   int start = static_cast<int>( pow(10.0, N-1) );
   int finish = static_cast<int>( pow(10.0, N) );
   int counter = 0;
   for (int i = start; i < finish; i++)
      if ( ok_cufru_stoiat_cherez_odny(i) )
      {
            std::cout << i << std::endl;
            counter++;
      } 
   std::cout << "Количество таких чисел: " << counter << std::endl;
//------------------------------------------------------------------------------
 
   return 0;
}


Цитата Сообщение от Chelioss Посмотреть сообщение
Что значит цифры в натуральном ряду через одну? Приведите пример
натуральный ряд цыфр
1 2 3 4 5 6 7 8 9
берем число 246
1 2 3 4 5 6 7 8 9
в натуральном ряду цыфры даного числа идут через одну
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
11.01.2011, 22:09     Определить, стоят ли цифры числа в натуральном ряду через одну #23
о как
Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
11.01.2011, 22:17     Определить, стоят ли цифры числа в натуральном ряду через одну #24
если неважен порядок следования цыфр:
3 7 5 9
тоесть цыфры то идут через одну, но в записи числа не попорядку
1 2 3 4 5 6 7 8 9
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
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
//Составить функцию, которая для целого числа определяет, 
//стоят ли его цифры в натуральном ряду через одну.
bool ok_cufru_stoiat_cherez_odny(int someDigit)
{
   std::vector <int> digits;
   while (someDigit)
   {
      digits.push_back(someDigit%10);
      someDigit /= 10;
   }
   sort(digits.begin(), digits.end());
   for (int i = 1; i < digits.size(); i++)
      if (digits[i] - digits[i-1] != 2) return 0;
   
   return 1;
}
//------------------------------------------------------------------------------
int main()
{
//В вызывающей функции main() организовать ввод целого числа N 
//из диапазона от 1 до 9
   int N = 10;
//В вызывающей функции main() организовать контроль ввода числа N.
   while (N < 1 || N > 9)
   {
      std::cout << "Введите цыфру от 1 до 9: ";
      std::cin >> N;
   }
//------------------------------------------------------------------------------  
//и среди всех N-значных целых чисел найти числа, запись которых 
//состоит из цифр, стоящих в натуральном ряду через одну.
//Вывести их на экран и подсчитать количество таких чисел.
   int start = static_cast<int>( pow(10.0, N-1) );
   int finish = static_cast<int>( pow(10.0, N) );
   int counter = 0;
   for (int i = start; i < finish; i++)
      if ( ok_cufru_stoiat_cherez_odny(i) )
      {
            std::cout << i << std::endl;
            counter++;
      } 
   std::cout << "Количество таких чисел: " << counter << std::endl;
//------------------------------------------------------------------------------
   
   return 0;
}


Добавлено через 43 минуты
или я тоже не так понял???
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
11.01.2011, 22:21  [ТС]     Определить, стоят ли цифры числа в натуральном ряду через одну #25
Спасибо, конечно, но у нас в вузе по другому учат. У нас нет std::, а есть #include <iostrea> using namespace std; Массив создается так int mas[const]( в статике). Нужно программу сделать с помощью двух функций - main и функция проверки числа. И т.д.) Уже готова почти, только исправить.
Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
11.01.2011, 22:23     Определить, стоят ли цифры числа в натуральном ряду через одну #26
Mayonez, думаю, что 3759 не подходит... цифры его идут через одну если их отсортировать... а это уже другое число выходит. думаю, что разница между двумя СОСЕДНИМИ цифрами должна быть 2. Например, 7535...

Добавлено через 1 минуту
Chelioss, а векторы изучали ?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
11.01.2011, 22:26  [ТС]     Определить, стоят ли цифры числа в натуральном ряду через одну #27
Нет. В одной лабе есть вектор, но это просто одномерный массив mas[n].
Алексaндр
131 / 108 / 5
Регистрация: 04.12.2010
Сообщений: 313
11.01.2011, 22:30     Определить, стоят ли цифры числа в натуральном ряду через одну #28
ну... задание ты понял. сможешь сам под массивы переделать?
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
11.01.2011, 22:54  [ТС]     Определить, стоят ли цифры числа в натуральном ряду через одну #29
Понял как работает ваша функция проверки, но надо без массивов. И digits[i] - digits[i-1] надо, думаю, по модулю

Добавлено через 10 минут
Решил. Работает, вроде, правильно.
Visual studio 2008

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
bool proverka(int chislo, int N)
{
    int digit=0,sleddigit=0;
    for(int i=0;i<N-1;i++)
    {
        digit=chislo%10;
        chislo/=10;
        sleddigit=chislo%10;
        if((sleddigit-2!=digit)&&(sleddigit+2!=digit))
            return false;
    }
    return true;
}
#include <iostream>
using namespace std;
bool proverka(int , int );
void main(void)
{
    setlocale(LC_ALL,"rus");
    char otv='y';
    do
    {
        int N=0;
        do
        {
            cout << "Введите число в диапазоне от 1 до 9 ";
            cin >> N;
        }while((N<1)||(N>9));
 
        int chislo=0,c=9;             
        for (int i=0;i<N;i++) 
        {   
            chislo=chislo*10+c;     
            c--; 
        }
        int minNchislo=1;
        for(int i=0; i<N-1; ++i)
            minNchislo*=10;
        int count=0;
        for(;chislo>=minNchislo; --chislo)
            if(proverka(chislo,N))
            {
                cout << chislo << endl;
                ++count;
            }
        cout << "Количество таких чисел равно " << count << endl;
 
        cout << "Повторить? ";
        cin >> otv;
    }while(otv=='y');
 
}
Добавлено через 1 минуту
Только не понятно что должны быть при N=1. У меня вывелись все цифры от 9 до 1.
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
12.01.2011, 21:32     Определить, стоят ли цифры числа в натуральном ряду через одну #30
думаю так оно и должно быть, так как если число однозначное то из всех однозначных чисел они все будут стоять в ряду относительно через одну.... думаю правильно все вышло

Добавлено через 2 минуты
эмм... единственное что должно быть так это от 1 до 9 а не наоборот наверно...

Добавлено через 8 минут
Цитата Сообщение от Chelioss Посмотреть сообщение
Код
int chislo=0,c=9; 
for (int i=0;i<N;i++) 
{
 chislo=chislo*10+c; 
c--;
}
както так
Код
int chislo=0,c=1;
 for (int i=0;i<N;i++) 
{
 chislo=chislo*10+c; 
c++;
}
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
13.01.2011, 00:27  [ТС]     Определить, стоят ли цифры числа в натуральном ряду через одну #31
cibertronic
В моем случае берется макс. число - это N раз 9. По вашему тогда надо делать мин. число, а это 1 с N-1 нулями, т.е., например, при N=4 будет 1000, а у вас 1234, т.е. числа в диапазоне 1000-1233 просто откидываются.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2011, 17:07     Определить, стоят ли цифры числа в натуральном ряду через одну
Еще ссылки по теме:

C++ Определить, составляют ли цифры числа возрастающую последовательность (через массивы)
C++ Определить, есть ли в заданном натуральном числе указанные цифры
C++ Для введённого с клавиатуры 6-значного числа определить, являются ли все цифры числа нечетные
C++ Найти цифры, которые чаще всего встречаются в заданном натуральном числе N

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

Или воспользуйтесь поиском по форуму:
cibertronic
255 / 142 / 13
Регистрация: 27.12.2009
Сообщений: 893
13.01.2011, 17:07     Определить, стоят ли цифры числа в натуральном ряду через одну #32
эмм.... мда... ссори...
Yandex
Объявления
13.01.2011, 17:07     Определить, стоят ли цифры числа в натуральном ряду через одну
Ответ Создать тему
Опции темы

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