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

Найти все возможные значения чисел - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
13.01.2012, 14:58     Найти все возможные значения чисел #1
задано количество разрядов числа диапазона unsigned long, имеющих значение L. Найти все возможные значения чисел.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 14:58     Найти все возможные значения чисел
Посмотрите здесь:

C++ Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв.
Все возможные комбинации 5 чисел C++
C++ Дано n различных чисел, напечатать все возможные перестановки этих чисел
Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел C++
C++ Сформировать все возможные последовательности из n натуральных чисел, каждое из которых не провосходит m
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
insolent
 Аватар для insolent
826 / 347 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
13.01.2012, 16:05     Найти все возможные значения чисел #2
Кол-во разрядов 10-го числа или 2-го?
Для 2-го - 2^L, для 10-го - 10^L
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
13.01.2012, 17:47  [ТС]     Найти все возможные значения чисел #3
вводим разряд и получаем все числа с таким количеством разрядов
Арсенал
144 / 66 / 6
Регистрация: 30.12.2011
Сообщений: 137
13.01.2012, 18:57     Найти все возможные значения чисел #4
adelok

Насколько я тебя понял, именно так хотел?

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
#include <iostream>
#include <cmath>
 
using namespace std;
 
void print(unsigned long i)
{
    unsigned long bit;
    for (int j = pow(2,i)-1; j>=0; j--)
    {
        for (int k=(i-1); k>=0;k--)
        {
            bit = ((j>>k) & 1);
            cout<<bit<<' ';
        }
        cout<<endl;
    }
}
 
int main()
{
    unsigned long i;
    cout<<"Enter exp:\n";
    cin>>i;
 
    print(i);
 
    return 0;
}


Результат
http://www.cyberforum.ru/attachment....1&d=1326466501

Вводим разряд и выводим результат. Учти, это степень двойки
Миниатюры
Найти все возможные значения чисел  
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
13.01.2012, 19:18     Найти все возможные значения чисел #5
Все гораздо проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <cmath>
 
int main ()
{
    unsigned long max, val = 0;
    size_t cnt;
    
    std::cin >> cnt;
 
    for ( max = static_cast<int> (pow (2., cnt)); val != max ; ++val )
        std::cout << val << " ";
        
    std::cout << std::endl; 
    return 0;
}
Добавлено через 41 секунду
http://liveworkspace.org/code/73f853...51c2fc4706d6f5

Добавлено через 1 минуту
Ну еще можно добавить банальную проверку
C++
1
2
if ( cnt > (sizeof (unsigned long) * 8 )  )
    exit (1);
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 01:16     Найти все возможные значения чисел #6
Цитата Сообщение от adelok Посмотреть сообщение
задано количество разрядов числа диапазона unsigned long, имеющих значение L. Найти все возможные значения чисел.
- если я правильно понял есть число разрядов, нужно перебрать на экране все числа укладывающиеся в их кол-во, предлагаю реализацию без math.h
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>
using namespace std;
 
int main()
{
    unsigned long L;
    //если не изменяет память ULONG_MAX = 0xffffffff т.е   имеет 8 разрядов
    while(8 < L)
    {
        system("cls");
        cout<<"Enter value L : ";
        cin>>L;
    }
    //находим максимальное значение числа
    unsigned long limit = 1;
    unsigned long i;
    for(i = 0; i < L; i++)
        limit *= 10;
    for(i = 0; i < limit; i++)
        cout<<i<<endl;
    system("pause");
    return 0;
}
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.01.2012, 01:59     Найти все возможные значения чисел #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
#include <stdio.h>
#include <stdlib.h>
 
size_t my_pow ( size_t base, size_t power ) {
   size_t t = base;
 
   if ( power == 0 && base != 0 )
      return 1;
   else if ( power == 0 ) {
      printf("лепишь горбатого!!!");
      exit ( -1 );
   }
   else
      while ( power-- > 1 )
         t *= base;
   return t;
}
 
int main ()
{
   size_t L = 9;
   size_t cnt = my_pow ( 10, L );
 
   while ( cnt != ( size_t ) 1 )
      printf( "%u\n", cnt++ );
 
   return 0;
}
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 10:36  [ТС]     Найти все возможные значения чисел #8
Си ругается на библиотеки.мне их где то скачать или они называются по другому?
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 11:20     Найти все возможные значения чисел #9
Цитата Сообщение от adelok Посмотреть сообщение
Си ругается на библиотеки.мне их где то скачать или они называются по другому?
- запиши мой код так
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 <stdio.h>
#include <stdlib.h>
 
int main()
{
    unsigned long L;
    //если не изменяет память ULONG_MAX = 0xffffffff т.е   имеет 8 разрядов
    while(8 < L)
    {
        system("cls");
        printf("Enter value L : ");
        scanf("%u",&L);
    }
    //находим максимальное значение числа
    unsigned long limit = 1;
    unsigned long i;
    for(i = 0; i < L; i++)
        limit *= 10;
    for(i = 0; i < limit; i++)
        printf("%u\n",i);
    system("pause");
    return 0;
}
Добавлено через 3 минуты
Код выше печатает всё числа от нуля до числа с разрядностью L если же нужно вывести только L-разрядные числа то этот цикл
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(i = 0; i < limit; i++)
* * * * * * * * printf("%u\n",i);
необходимо записать вот так
C
1
2
for(i = limit/10; i < limit; i++)
        printf("%u\n",i);
Добавлено через 1 минуту
PS:adelok, укажи в какой среде пишешь
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 11:21  [ТС]     Найти все возможные значения чисел #10
среда Си
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.01.2012, 11:21     Найти все возможные значения чисел #11
Вот вариант на Си
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#include <math.h>
 
int main (void)
{
        long max, val = 0;
        size_t cnt;
        
        scanf ("%ld", &cnt);
 
        for ( max = (long) pow (2., cnt) ; val != max ; ++val )
                printf ("%ld ", val);
                
        printf ("\n"); 
        return 0;
}
http://codepad.org/X86QG9eT
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 11:50     Найти все возможные значения чисел #12
Цитата Сообщение от adelok Посмотреть сообщение
среда Си
- код с поста 9 пробовал?
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 14:10  [ТС]     Найти все возможные значения чисел #13
alkagolik, при смене L те же числа выдаёт.

мне же вроде нада чтобы с руки вводили разряд L и на выход шли числа с таким количеством разрядов.
Т.е. если L=1, то на выходе 0 1 2 3 4 5 6 7 8 9; L=2, то 10...99. или я что то не пойму...

Добавлено через 23 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- код с поста 9 пробовал?
там 14,15 синтаксис нарушен, i и limit неопознаёт

unsigned long 0..4 294 967 295

Добавлено через 28 минут
вот в посте 11 как убрать числа с меньшим разрядом?например когда задаём разряд 3, то тут нам выводит числа 1о 2ух 3ёх разрядные.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.01.2012, 15:08     Найти все возможные значения чисел #14
Цитата Сообщение от adelok Посмотреть сообщение
мне же вроде нада чтобы с руки вводили разряд L и на выход шли числа с таким количеством разрядов.
Т.е. если L=1, то на выходе 0 1 2 3 4 5 6 7 8 9; L=2, то 10...99. или я что то не пойму...
ну тогда я правильно понял вашу задачу. Вам надо только несколько изменить исходник (ввод L, условие выхода из цикла) и всё пойдет как по маслу.
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 18:17     Найти все возможные значения чисел #15
Цитата Сообщение от adelok Посмотреть сообщение
вот в посте 11 как убрать числа с меньшим разрядом?например когда задаём разряд 3, то тут нам выводит числа 1о 2ух 3ёх разрядные.
- я и писал об этом
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Код выше печатает всё числа от нуля до числа с разрядностью L если же нужно вывести только L-разрядные числа то этот цикл
Сообщение от -=ЮрА=-
for(i = 0; i < limit; i++)
* * * * * * * * printf("%u\n",i);
необходимо записать вот так
Код C
1
2
for(i = limit/10; i < limit; i++)
* * * * * * * * printf("%u\n",i);

Цитата Сообщение от adelok Посмотреть сообщение
ам 14,15 синтаксис нарушен, i и limit неопознаёт
- на скобку цикла компилятор ругается
Единственное что можно сделать в алгоритме так это начальный инит L
C
1
unsigned long L = 0;
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 21:58     Найти все возможные значения чисел #16
adelok, вот нормальный рабочий и проверенный код на С который перебирает числа с L разрядами
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main()
{
    unsigned long L = 0;
    while(L < 1 || 10 < L)
    {
        printf("Enter value L : ");
        scanf("%u",&L);
    }
    //находим максимальное значение числа
    unsigned long limit = 1;
    unsigned long i;
    for(i = 0; i < L; i++)
        limit *= 10;
    for(i = limit/10; i < limit; i++)
        printf("%u\n",i);
    return 0;
}
Стоп-точку вконце не делал раз у вас компилятор system не воспринимает, придумайе стоп сами, вводом переменной с помощью Sleep или как вам будет угодно
PS:Тем кто любит кодпад.орг сюда http://codepad.org/cXotO6jO
Миниатюры
Найти все возможные значения чисел  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 22:05     Найти все возможные значения чисел
Еще ссылки по теме:

C++ Найти все возможные комбинации по номеру карты
C++ Вывести все возможные комбинации трех натуральных чисел x, y и z до 36 с определенными условиями
Найти все возможные подмножества из данного множества C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
14.01.2012, 22:05     Найти все возможные значения чисел
  #17

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(L < 1 || 10 < L)
* * * * {
* * * * * * * * printf("Enter value L : ");
* * * * scanf("%u",&L);
* * * * }
- если мы введём больше 10-ти разрядов то выскочим за пределы ULONG_MAX, вы сами его даже написали
Цитата Сообщение от adelok Посмотреть сообщение
4 294 967 295
- это раз, два, три...10-ть разрядов...

Yandex
Объявления
14.01.2012, 22:05     Найти все возможные значения чисел
Ответ Создать тему
Опции темы

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