C# pascal到c的转换算法#
我正在尝试将这个东西(Shannon Fano算法)从pascal转换为c#:C# pascal到c的转换算法#,c#,pascal,turbo-pascal,C#,Pascal,Turbo Pascal,我正在尝试将这个东西(Shannon Fano算法)从pascal转换为c#: ShennonFano程序; 使用阴极射线管; 常数 a:char=('a','b','c','d','e','f')的数组[1..6]; af:整数=(10,8,6,5,4,3)的数组[1..6]; 过程搜索树(分支:字符;完整分支:字符串;开始位置:整数;结束位置:整数); 变量 dS:真实的; i、 m,S:整数; c_分支:字符串; 开始 如果是(a“”),则c_分支:=完整分支+分支 其他c_分支机构:='
ShennonFano程序;
使用阴极射线管;
常数
a:char=('a','b','c','d','e','f')的数组[1..6];
af:整数=(10,8,6,5,4,3)的数组[1..6];
过程搜索树(分支:字符;完整分支:字符串;开始位置:整数;结束位置:整数);
变量
dS:真实的;
i、 m,S:整数;
c_分支:字符串;
开始
如果是(a“”),则c_分支:=完整分支+分支
其他c_分支机构:='';
如果(开始位置=结束位置),则
开始
WriteLn(a[start_pos],'=',c_分支);
出口
结束;
dS:=0;
对于i:=开始位置到结束位置do dS:=dS+af[i];
dS:=dS/2;
S:=0;
i:=开始位置;
m:=i;
而((S+af[i]除了BugFinder的答案
帕斯卡说:
while ((S+af[i]<dS) and (i<end_pos)) do
begin
S := S + af[i];
inc(i); inc(m);
end;
while (S + af[i] < dS && i<endPos)
{
S += af[i];
i++;
}
while((S+af[i]除了BugFinder的答案
帕斯卡说:
while ((S+af[i]<dS) and (i<end_pos)) do
begin
S := S + af[i];
inc(i); inc(m);
end;
while (S + af[i] < dS && i<endPos)
{
S += af[i];
i++;
}
while((S+af[i]在pascal代码中,您错过了终止“我无事可做”部分
你跳过了退出..在你的c代码中,所以它一直在循环
if (startPos == endPos)
{
Console.WriteLine(a[startPos] + " = " + c_branch);
}
你需要在控制台后面加一个回车
if (startPos == endPos)
{
Console.WriteLine(a[startPos] + " = " + c_branch);
return;
}
在pascal代码中,您错过了终止“我无事可做”部分
你跳过了退出..在你的c代码中,所以它一直在循环
if (startPos == endPos)
{
Console.WriteLine(a[startPos] + " = " + c_branch);
}
你需要在控制台后面加一个回车
if (startPos == endPos)
{
Console.WriteLine(a[startPos] + " = " + c_branch);
return;
}
当“WriteLn(a[start_pos],'=',c_branch);exit;”@BugFinder,谢谢)时,您错过了真正重要的退出…行。当“WriteLn(a[start_pos],'=',c_branch);exit;”@BugFinder,谢谢)时,您错过了真正重要的退出…行