Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Матрица
DF2 :: ФОРУМЫ > Основные форумы > Софт и железо > Программирование / Coding
izrukvruki
Подскажите, каким образом можно задать матрицу размера (n, 2^n) следующего вида (при n=4)
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

Желательно на бейсике...
Спасибо!
feanor
Не на бейсике
Код
using System;
                    
public class Program
{
    public static void Main()
    {
        const int n = 4;
        
        int width = n;
        int height = 1 << n;
        int[,] matrix = new int[width,height];
        
        for(int i = 0; i < width; i++)
        {
            for(int j = 0; j < height; j++)
            {
                matrix[width-1-i,j] = (j >> i) & 1;
            }
        }
        
        //вывод
        for(int j = 0; j < height; j++)
        {
            for(int i = 0; i < width; i++)
            {
                Console.Write(matrix[i,j]);
            }
            Console.WriteLine();
        }
    }
}



Код
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

izrukvruki
лихо... но надо на VB...
а эта строка
Код
matrix[width-1-i,j] = (j >> i) & 1;

что делает?
tolich
Выделяет из двоичной записи числа j бит с номером i, где i=0..n-1 и записывает его в матрицу по указанным индексам.
Буквально: сдвинуть j на i разрядов вправо и взять младший бит результата.

А 1 << n возводит 2 в степень n путём сдвига 1 влево на n разрядов.
izrukvruki
мне подсказали, что на бейсике это будет выглядеть так:
Код
(j/(2^i)) and 1

но все равно я смысл этого не понял, тупо написал...

Задача решена. Спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.