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

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

Войти
Регистрация
Восстановить пароль
 
sandy_park
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
#1

Забить двумерный массив всеми возможными битовыми комбинациями - C++

14.11.2012, 00:21. Просмотров 491. Ответов 6
Метки нет (Все метки)

А вы не подскажете как в цикле забить двумерный массив всеми возможными комбинациями битов


например при n = 3 будет двумерный массив

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

при n = 2 двумерный массив

0 0
0 1
1 0
1 1

для любого n
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2012, 00:21     Забить двумерный массив всеми возможными битовыми комбинациями
Посмотрите здесь:

Разбить строку S на слова заданного набора всеми возможными способами - C++
1.Помогите Составить программу на C++ пожалуйста(((( Дана строка S и набор Т слов А,.. , A. Разбить строку S на слова набора всеми...

Построить последовательность n!, для n=1…7 со всеми возможными перестановками из элементов этой последовательности - C++
Помогите с задачкой...:(Построить последовательность n!, для n=1…7. Для всех элементов этой по-следовательности и построить для них все...

Пол-ль вводит число от 50 до 100. Программа раскладывает число на сумму 4-х квадратов, всеми возможными способами - C++
Пример: 39 = 1^2+2^2+3^2+5^2. Не получается написать код для этой задачи Помогите пож разобраться

Дан двумерный массив размером 5 * 8, заполненный случайным образом. Вставить перед всеми строками, первый элемент которых делится на3,вставить.... - C++
Дан двумерный массив размером 5 * 8, заполненный случайным образом. Вставить перед всеми строками, первый элемент которых делится на 3,...

Забить в массив 10 чисел и вывести их в обратном порядке - C++
забить в массив 10 чисел и вывести их в обратном порядке

Как забить в массив типа int инфу из файла? - C++
надо с файла 1.тхт по символу (они через пробел) забить в массив mas. вот как делал : ifstream f("D:\\1.txt"); for(int r=0;i<10;i++) ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13051 / 7314 / 814
Регистрация: 27.09.2012
Сообщений: 18,050
Записей в блоге: 3
Завершенные тесты: 1
14.11.2012, 00:57     Забить двумерный массив всеми возможными битовыми комбинациями #2
Цитата Сообщение от sandy_park Посмотреть сообщение
А вы не подскажете как в цикле забить двумерный массив всеми возможными комбинациями битов
а оно прям обязательно в двумерный массив?
sandy_park
0 / 0 / 0
Регистрация: 30.10.2012
Сообщений: 10
14.11.2012, 01:03  [ТС]     Забить двумерный массив всеми возможными битовыми комбинациями #3
а как по другому?? просто пока не представляю
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
14.11.2012, 01:10     Забить двумерный массив всеми возможными битовыми комбинациями #4
Цитата Сообщение от sandy_park Посмотреть сообщение
для любого n
прям для любого
ограничение есть по размеру числа
если возьмем размер инт 32 байта то памяти потребуется больше чем 4 ГБайта
а так примерно так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int n;
cin>>n;
unsigned char ** buf;
buf=new 1<<n;
for(int i=0;i<(1<<n);i++)
   buf[i]=new n;
for(int i=0;i<(1<<n);i++)
  {
    int tmp=i;
    for(int j=0;j<n;j++)
     {
      buf[i][j]= tmp%2;
      tmp/=2;
     }  
}
писал на коленке, посему ошибки сами правте
Ptomaine
13 / 13 / 0
Регистрация: 22.10.2011
Сообщений: 35
14.11.2012, 01:22     Забить двумерный массив всеми возможными битовыми комбинациями #5
Можно и так:

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
#include <iostream>
 
int main()
{
    const int n = 3, fullSize = n * n, end = fullSize - 1, imask = 1 << (n - 1);
    int **array = new int*[fullSize];
 
    for (int y = 0; y < end; ++y)
    {
        array[y] = new int[n];
 
        int mask = imask;
 
        for (int x = 0; x < n; ++x)
        {
            array[y][x] = ((y & mask) ? 1 : 0 );
 
            mask >>= 1;
        }
    }
 
    for (int y = 0; y < end; ++y)
    {
        for (int x = 0; x < n; ++x)
        {
            std::cout << array[y][x];
        }
 
        std::cout << std::endl;
 
        delete[] array[y];
    }
 
    delete[] array;
 
    return 0;
}
ValeryS
Модератор
6550 / 5016 / 463
Регистрация: 14.02.2011
Сообщений: 16,728
14.11.2012, 01:27     Забить двумерный массив всеми возможными битовыми комбинациями #6
Цитата Сообщение от Ptomaine Посмотреть сообщение
n = 3, fullSize = n * n,
fullSize=9
а при n=3 всего 8 комбинаций
при n=5 fullSize=25 а комбинаций 32
так что степень 2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2012, 01:36     Забить двумерный массив всеми возможными битовыми комбинациями
Еще ссылки по теме:

Как можно вложить двумерный массив в двумерный? - C++
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы размерностью КxК... Подскажите (желательно с...

Осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д. - C++
1) Как осуществить ввод с клавиатуры в символьный массив со всеми пробелами, знаками препинания и т.д.? 2) И еще вопрос есть такой....

Создать массив указателей на Person и использовать его со всеми производными классами - C++
Всем привет, это моя первая тема на форуме, поэтому сорри, если что не так. В местном поиске ничего подобного не нашел. Гугл тоже не...

Вставьте в заданный массив элемент X между всеми соседними элементами, имеющими разные знаки - C++
Дан одномерный массив (из N элементов), элементы которого - целые числа, не равные нулю. Также дано целое число X. Вставьте в заданный...


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

Или воспользуйтесь поиском по форуму:
Ptomaine
13 / 13 / 0
Регистрация: 22.10.2011
Сообщений: 35
14.11.2012, 01:36     Забить двумерный массив всеми возможными битовыми комбинациями #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
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cmath>
 
int main()
{
    const int n = 3, fullSize = std::pow(2, n), imask = 1 << (n - 1);
    int **array = new int*[fullSize];
 
    for (int y = 0; y < fullSize; ++y)
    {
        array[y] = new int[n];
 
        int mask = imask;
 
        for (int x = 0; x < n; ++x)
        {
            array[y][x] = ((y & mask) ? 1 : 0 );
 
            mask >>= 1;
        }
    }
 
    for (int y = 0; y < fullSize; ++y)
    {
        for (int x = 0; x < n; ++x)
        {
            std::cout << array[y][x];
        }
 
        std::cout << std::endl;
 
        delete[] array[y];
    }
 
    delete[] array;
 
    return 0;
}
Yandex
Объявления
14.11.2012, 01:36     Забить двумерный массив всеми возможными битовыми комбинациями
Ответ Создать тему
Опции темы

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