Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
#1

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

13.01.2012, 14:58. Просмотров 1551. Ответов 16
Метки нет (Все метки)

задано количество разрядов числа диапазона unsigned long, имеющих значение L. Найти все возможные значения чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2012, 14:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти все возможные значения чисел (C++):

Дано n различных чисел, напечатать все возможные перестановки этих чисел - C++
Помогите пожалуйста решить задачу через рекурсию: Дано n различных чисел, напечатать все возможные перестановки этих чисел.

Все возможные комбинации 5 чисел - C++
В общем задача такая: Нужно, чтобы программа выдавала все возможные комбнации 5 чисел: 1 число от 1 до 32 2 число от 2 до 33, но...

Перебрать все возможные комбинации трех чисел от нуля до двух - C++
Здравствуйте, помогите, пожалуйста, разобраться с темой (лучше всего написать код, а то на словах вроде понятно, но код всё же лучше) ...

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

Сформировать все возможные последовательности из n натуральных чисел, каждое из которых не провосходит m - C++
Доброго времени суток. Помогите пожалуйста с программой. Я то ли не понимаю ее смысл, то ли просто не могу написать, что в принципе одно и...

Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел - C++
Доброго всем времени суток.Я делаю только первые шаги в программировании.Начал разбираться с массивами простенькие задачки вроде...

16
insolent
826 / 344 / 15
Регистрация: 30.01.2009
Сообщений: 1,204
13.01.2012, 16:05 #2
Кол-во разрядов 10-го числа или 2-го?
Для 2-го - 2^L, для 10-го - 10^L
0
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
13.01.2012, 17:47  [ТС] #3
вводим разряд и получаем все числа с таким количеством разрядов
0
Арсенал
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

Вводим разряд и выводим результат. Учти, это степень двойки
2
Миниатюры
Найти все возможные значения чисел  
go
Эксперт С++
3586 / 1366 / 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/73f85393026113c31751c2fc4706d6f5

Добавлено через 1 минуту
Ну еще можно добавить банальную проверку
C++
1
2
if ( cnt > (sizeof (unsigned long) * 8 )  )
    exit (1);
2
-=ЮрА=-
Заблокирован
Автор 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;
}
0
alkagolik
Заблокирован
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;
}
1
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 10:36  [ТС] #8
Си ругается на библиотеки.мне их где то скачать или они называются по другому?
0
-=ЮрА=-
Заблокирован
Автор 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, укажи в какой среде пишешь
1
adelok
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 11:21  [ТС] #10
среда Си
0
go
Эксперт С++
3586 / 1366 / 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
1
-=ЮрА=-
Заблокирован
Автор FAQ
14.01.2012, 11:50 #12
Цитата Сообщение от adelok Посмотреть сообщение
среда Си
- код с поста 9 пробовал?
0
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ёх разрядные.
1
alkagolik
Заблокирован
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, условие выхода из цикла) и всё пойдет как по маслу.
1
-=ЮрА=-
Заблокирован
Автор 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;
0
14.01.2012, 18:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 18:17
Привет! Вот еще темы с ответами:

Найти все возможные комбинации по номеру карты - C++
Все привет!!! Выручайте с этим кодом уже вожусь почти неделю и не могу с ним нечего сделать #include &quot;stdafx.h&quot; #include &lt;iostream&gt; ...

Найти все возможные комбинации четырех букв - C++
Есть задача с 4 буквами.A,B,C,D нужно найти все возможные комбинации этих букв. Комбинации если я не путаю не чего считаются так...

Найти все возможные подмножества из данного множества - C++
Необходимо написать программу, выводящую все возможные подмножества из данного множества. Выглядить должно примерно так: Массив на...

Все отрицательные значения массива утроить, найти среднее арифметическое всех чисел - C++
Помогите создать числовой массив А. Значение N вводиться с клавиатуры. Все отрицательные значения утроить, найди среднее...


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

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

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