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

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

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

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

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

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

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

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

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


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

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

Добавлено через 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
Заблокирован
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
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
1 / 1 / 1
Регистрация: 23.12.2010
Сообщений: 136
14.01.2012, 11:21  [ТС] 10
среда Си
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
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
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
Заблокирован
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
Заблокирован
Автор 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
Миниатюры
Найти все возможные значения чисел  
0
-=ЮрА=-
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-ть разрядов...

1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.01.2012, 22:05

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru