C# 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_分支机构:='

我正在尝试将这个东西(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_分支机构:='';
如果(开始位置=结束位置),则
开始
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,谢谢)时,您错过了真正重要的退出…行