2013-08-28 2 views
4

Вот код, с которым я работаю, он проверяет ввод «b» и должен выводить «Y», если в нем было что-то еще.Невозможно выяснить, если инструкция

Пожалуйста, никто не спросить, почему я решил использовать «Y» для ложного значения ..

> , < 
+++++ +++++ 
[ 
    > ----- ---- 
    < - 
] 
> ----- --- < 


[ 
    > 
    +++++ +++++ 
    [ 
      > +++++ +++ 
      < - 
    ] 
    > +++++ ++++ < 
    . < 
] 

Хотел эквивалент

char c; 
c = getchar(); 
if (c == 'b') 
    putchar('Y'); 

Я не подвожу никакого вывода (направил его на файл и его шестигранное нажатие, а также ничего на экране) независимо от того, что я вложил в программу

+1

Возможно, если бы вы использовали CMMI или Design Patterns, это помогло бы? –

+0

Я на самом деле просто написал программу для ее создания, код размещен на http://pastebin.com/BAXLWk1J – phyrrus9

ответ

7

Ваша проблема в том, что когда вы достигнете своего второго цикла, у вас всегда есть значение нуля в текущем cel l, поэтому ваш второй цикл никогда не запускается. Вы должны быть еще одной ячейкой справа, чтобы получить результат ваших изменений на вкладке, а затем вам нужно выполнить работу, только если значение равно ноль (в отличие от циклов, которые будут работать только в том случае, если значение не является нуль).

Чтобы сделать условие, я бы предложил захватить что-то с сайта с кодом, который кто-то еще придумал (an example I found).

Во всяком случае, это код, который я придумал, чтобы решить вашу проблему:

, 

7 * 7 * 7 = 98 = 'b' 
> +++++ ++ 
[ > +++++ ++ 
    [ 
    << -- 
    >> - 
    ] 
    < - 
] 
< 

expect everything to be zero here 

[ >+ >+ <<- ] 
> [ <+ >- ] + 
> [ <- >[-] ] 
< [ < 
    >> [-] 
    (11 * 8) plus 1 = 89 = 'Y' 
    +++++ +++++ + 
    [ << +++++ +++ >> - ] 
    << + . 
    > - 
] 
8

После почти 2 лет, вы, вероятно, не нуждаются в этом больше, но вот моя версия «, если - еще ":

+++++ +++++ 
+++++ +++++ 
+++++ +++++ 
+++   (this is the value you want to check, in this case it's the "!") 

> , <   (then you take input an char to compare) 
[ - > - < ] (after that you have to check if their ascii values are the same) 
>>   (and initialize the answer on "true") 

+++++ +++++ 
+++++ +++++ 
+++++ +++++ 
+++++ 

< [ - > ] > . (if "false", this loop will be executed and the answer won't be printed) 

Надеюсь, что это кому-то полезно сегодня. : D

+0

im действительно удивил, что кто-то действительно посмотрел этот пост. Я с тех пор понял это после немного больше практики bf, но это на самом деле аккуратный способ сделать это, спасибо. – phyrrus9

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

  • Нет связанных вопросов^_^