我需要转换字符串到ACII添加1和转换回来。
Next_letter = convert(char, convert(integer, Letter) + 1)但错误:
main.pro(19,48)错误c504 :表达式的类型为‘main::字母’,这与类型‘::整型’不兼容
全员课程:
/* программа prog2_8.pro */
/* генерации ряда букв а…d в столбик в порядке возрастания */
implement main
open core, console
domains
letter = string.
class predicates
write_letter : (letter).
clauses
write_letter("e").
write_letter(Letter) :-
Letter < "e",
write(" ", Letter),
nl,
Next_letter = convert(char, convert(integer, Letter) + 1),
write_letter(Next_letter).
run() :-
write("letters:"),
nl,
write_letter("a"),
fail().
run() :-
nl,
write("Press Enter"),
_ = readchar(),
succeed().
end implement main
goal
console::runUtf8(main::run).发布于 2018-02-19 08:26:50
使用char_int/2尝试以下操作
char_int(Letter, IntLetter), % Letter = 'a' -> IntLetter = 97
NextIntLetter = IntLetter + 1, % NextIntLetter = 98
char_int(NextLetter, NextIntLetter) % NextLetter = 'b'在这里NextLetter应该是你所需要的
来自要人文件
char_int(CHAR CharArg,整数IntArg) 流型 (i,o),(o,i),(i,i) 字符与其ASCII值之间的转换 备注 (i,o)将IntArg绑定到CharArg的ASCII代码。 (o,i)将CharArg绑定到具有IntArg指定的ASCII代码的字符(注意,它只考虑整数值的较低字节)。 (i,i)如果IntArg绑定到CharArg的ASCII代码,则成功;如果不是,则失败。 失败 见(i,i)的评论。 误差 没有错误。 示例 若要测试此示例,请使用中的“Project.TestGoals”。 目标: char_int('a',X) X=97 1解决方案目标: char_int(X,97) X=a 1解决方案目标: char_int('a',97)是目标: char_int('a',197)
编辑
您的问题是,string不能在其ASCII值中转换,因为它是一组字符。您必须将letter = string替换为letter = char," (围绕您的角色)替换为'。
https://stackoverflow.com/questions/48860057
复制相似问题