所以给出的问题如下
编写程序printfigure()以打印出下图的相应部分,以输入用户给出的输入大写字符。测试你的程序。
例如,当输入为C时,打印输出为:
输入大写字符:C 相应的数字如下: 一个 BB CCC
无论如何,我觉得我已经大部分都想到了这一点,但代码仍然打印出给定的字母。我认为这是我的递归和基本情况被跳过的问题。到目前为止,这是我的代码:
alphabet(['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']).
printfigure :- write('Input a capitol character: '),get0(L),
write('The corresponding figure is as follows: '),nl,
alphabet(A),member(L,A,0).
member(X,[X|_],S) :- X =:= X, C1 is S+1, abc(X,C1).
member(X,[H|T],S) :- C1 is S+1, abc(H,C1), member(X,T,C1).
abc(_,0) :- nl.
abc(Q,N) :- write(Q), N1 is N-1, abc(Q,N1).
任何帮助都很棒,我只是希望了解出了什么问题。
答案 0 :(得分:0)
一种调试(以任何语言)分离功能独立部分的方法。
printfigure :- write('Input a capitol character: '),get0(L),
write('The corresponding figure is as follows: '),nl,
printfigure(L).
printfigure(L) :-
alphabet(A),member(L,A,0).
并测试输入(我推测)您认为将通过get0 / 1输入您的代码
1 ?- printfigure('C').
A
BB
ERROR: =:=/2: Arithmetic: `'C'/0' is not a function
Exception: (9) so:member('C', ['C', 'D', 'E', 'F', 'G', 'H', 'I'|...], 2) ? aabort
你可以看到
alphabet([0'A,0'B,0'C...]).
或使用不同的输入谓词,如read / 1,或将字符代码转换为原子(使用atom_codes(A,[C]))然后纠正其他错误...