Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136

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

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

Студворк — интернет-сервис помощи студентам
задано количество разрядов числа диапазона unsigned long, имеющих значение L. Найти все возможные значения чисел.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.01.2012, 14:58
Ответы с готовыми решениями:

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

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

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

16
 Аватар для insolent
829 / 353 / 64
Регистрация: 30.01.2009
Сообщений: 1,204
13.01.2012, 16:05
Кол-во разрядов 10-го числа или 2-го?
Для 2-го - 2^L, для 10-го - 10^L
0
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
13.01.2012, 17:47  [ТС]
вводим разряд и получаем все числа с таким количеством разрядов
0
145 / 67 / 14
Регистрация: 30.12.2011
Сообщений: 137
13.01.2012, 18:57
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;
}


Результат
https://www.cyberforum.ru/atta... 1326466501

Вводим разряд и выводим результат. Учти, это степень двойки
Миниатюры
Найти все возможные значения чисел  
2
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
13.01.2012, 19:18
Все гораздо проще
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/... fc4706d6f5

Добавлено через 1 минуту
Ну еще можно добавить банальную проверку
C++
1
2
if ( cnt > (sizeof (unsigned long) * 8 )  )
    exit (1);
2
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.01.2012, 01:16
Цитата Сообщение от 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
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.01.2012, 01:59
ну... какой вопрос, такие и ответы. Каждый как понял так и ответил и все по своему)))
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
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 10:36  [ТС]
Си ругается на библиотеки.мне их где то скачать или они называются по другому?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.01.2012, 11:20
Цитата Сообщение от 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
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 11:21  [ТС]
среда Си
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
14.01.2012, 11:21
Вот вариант на Си
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
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.01.2012, 11:50
Цитата Сообщение от adelok Посмотреть сообщение
среда Си
- код с поста 9 пробовал?
0
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 14:10  [ТС]
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
1599 / 622 / 113
Регистрация: 15.07.2011
Сообщений: 3,548
14.01.2012, 15:08
Цитата Сообщение от adelok Посмотреть сообщение
мне же вроде нада чтобы с руки вводили разряд L и на выход шли числа с таким количеством разрядов.
Т.е. если L=1, то на выходе 0 1 2 3 4 5 6 7 8 9; L=2, то 10...99. или я что то не пойму...
ну тогда я правильно понял вашу задачу. Вам надо только несколько изменить исходник (ввод L, условие выхода из цикла) и всё пойдет как по маслу.
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.01.2012, 18:17
Цитата Сообщение от 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
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.01.2012, 21:58
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
Миниатюры
Найти все возможные значения чисел  
0
14.01.2012, 22:05

Не по теме:

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

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2012, 22:05
Помогаю со студенческими работами здесь

Найти все возможные значения уравнения
1) числа a,b,c попарно различны и выполняеться уравнения a+1/b=b+1/c=c+1/a найти все возможные значения уравнения

Определите все возможные значения произведения i * j, если целочисленные значения
Определите все возможные значения произведения i * j, если целочисленные значения переменных изменяются в соответствии i от a до b, j от...

Найдите все возможные значения x
Число x0x0 . . . x0702020 . . . 0202 делится на 37, где x — некоторая цифра (цифры x и 2 написаны по 2018 раз). Найдите все возможные...

Найдите все возможные значения a
Известно, что уравнение |x − 1| + |x − 2| + · · · + |x − 2019| = a имеет ровно одно решение. Найдите все возможные значения a ...

Как пересчитать все возможные значения
U=L0*(H0-H)/(L1+ABS(H0-H))+L2*V+L3*V^2 Есть такая формула. Нужно пересчитать все значения, что-то не смог найти , как реализовать...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru