2015-12-07 3 views
-2

Мне нужно сделать программу на паскале.написать перестановки 0 и 1

, например

readln(4) 

и выхода должны быть все перестановки 0 и 1

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

Не могли бы вы мне помочь, пожалуйста?

+2

Я совершенно уверен, что ваш инструктор хочет видеть свою работу, а не наши. Если вы не можете начать свое задание, обратитесь за помощью к своему инструктору; либо они еще не заработали свою зарплату за предоставление образования, или вы не были внимательны в классе. –

+0

Извините, я не хотел, чтобы вы делали домашнее задание. Я попросил вас о помощи, потому что, когда я прошу моего учителя помочь, его ответ «попробуй думать, как программа», и это не пища для меня. – MatFyzak

+0

Извините. Как я уже сказал, мы не здесь, чтобы делать домашнее задание. Ваш учитель ** получает оплату за обучение **. Если вы не понимаете информацию достаточно хорошо, чтобы начать свое задание, ** обратитесь за помощью к своему инструктору ** за помощью. –

ответ

-1

Возможно, вы заметили, что «все перестановки 0 и 1» - это binary numbers.

Учитывая вход 3, то вывод будет таким:

000, 001, 010, 011, 100, 101, 110 and 111 

и они являются номерами 0, 1, 2, 3, 4, 5, 6 и 7 в базе 2 (бинарной).

У вас есть 2 проблемы.

Во-первых, вы должны иметь возможность конвертировать десятичное (базовое 10) целое число (например, 12) в двоичное (12 в двоичном формате - 1100).

И вторая проблема заключается в том, где остановиться с целыми числами. Если вам даны вход 2, вы выведете 00, 10, 11 и остановитесь. Это от 0 до 3. Учитывая 3 вы выходите 000, 001, 010, 011, 100, 101, 110, 111 - это от 0 до 7.

Есть ли здесь шаблон? Да. Постарайтесь найти способ выяснить, что максимальное десятичное число будет, если ваш вход X.

Base 10 работ по степеням 10, 100 10 1
Base 2 степени 2, 4 2 1
Так что, учитывая вход 5, мы знаем, что будет 5 1 s в качестве последнего номера, 11111. Что это за число в десятичной форме? Это 2 -1, что 31. С учетом ввода 3, мы знаем, что это будет 111, который 7 или 2 -1

Поэтому, учитывая любой вход X, мы знаем, что последний число будет Й 1 ы в ряде, и что Х 1 ы будут равны 2 Х -1

Это просто программировать. Просто создать функцию MagicForumulaForCalculatingNumberGivenLength которая принимает целое число в качестве входных данных (длина) и возвращает десятичное целое число:
function MagicForumulaForCalculatingNumberGivenLength(input:integer):integer; Result := (power(2, input) -1);

Итак, теперь мы знаем, десятичное число, мы должны идти до - для ввода 5 - 31.

Я предполагаю, что вы можете цикл, как это:

readln(Input); 

for I := 1 to MagicFormulaForCalculatingNumberGivenLength(Input); 
    writeln(MagicFormulaForCalculatingBinaryGivenNumber(I)); 

Так что теперь единственный вопрос заключается в том, чтобы создать двоичное число. It's pretty easy - Я дам вам код в псевдокоде, так что вы можете написать его самостоятельно в паскале:

define DecimalNumberToBinaryString(Input:integer):string; 

    SBinary: string; 
    SBinaryRev: string; 


    while Input > 0 do 
    SBinary = SBinary + mod(Input,2) 
    Input = div(Input,2) 

SBinaryRev = TextReverse(SBinary); 

return SBinary 
+0

Если я допустил ошибку, прокомментируйте. Это мой первый ответ Паскаля, я новичок на этом языке. – Tim

Смежные вопросы