Исправить переведённый код с Pascal - C#
Формулировка задачи:
Сам код на Паскале:
Мой переведённый код:
Помогите исправить, заранее спасибо.
Вот что вводится в программу:
100 у3 AS42 AS 22 77w.
Вывод:
37
var
s, s1: string;
i, k: integer;
function canbe(s: string): boolean;
begin
Result := false;
if length(s) = 0 then exit;
for var k := 1 to length(s) do
if (s[k] < '0') or (s[k] > '4') then
exit;
Result := true;
end;
function ToDec(s: string): integer;
var
c, l: integer;
begin
Result := 0;
for var i := length(s) downto 1 do
begin
Val(s[i], c, l);
Result := Result + c * Round(Power(5, length(s) - i));
end;
end;
begin
ReadLn(s); s := ' ' + Copy(s, 1, Pos('.', s));
i := 1; k := 0;
while i < length(s) do
begin
while (s[i] = ' ') and (s[i] = '.') and (i < length(s)) do
i := i + 1;
s1 := '';
while (s[i] <> ' ') and (s[i] <> '.') and (i < length(s)) do
begin
s1 := s1 + s[i];
i := i + 1;
end;
if canbe(s1) then
k := k + ToDec(s1);
i := i + 1;
end;
WriteLn(k);
end.using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Program12
{
class Program
{
static bool canbe(string s)
{
var Result = false;
if (s.Length == 0)
{
return Result;
}
for (int k = 0; k < s.Length; k++)
{
if (s[k] < '0' || s[k] > '4')
{
return Result;
}
}
Result = true;
return Result;
}
static int ToDec(string s)
{
int c = 0, l = 0;
double Result = 0;
for (int i = s.Length - 1; i >= 0; i--)
{
Convert.ToInt32(s[i]);
Convert.ToInt32(c);
Convert.ToInt32(l);
Result += c * Math.Round(Math.Pow(5, s.Length - i));
}
return 0;
}
static void Main(string[] args)
{
string s1;
string s = Console.ReadLine();
s = " " + s.Substring(1, s.IndexOf("."));
int i = 0, k = 0;
while (i < s.Length)
{
while (s[i] == ' ' && s[i] == '.' && i < s.Length)
{
i++;
}
s1 = "";
while (s[i] != ' ' && s[i] != '.' && i < s.Length)
{
s1 += s[i];
i++;
}
if (canbe(s1))
{
k += ToDec(s1);
}
i++;
}
Console.WriteLine(k);
}
}
}Решение задачи: «Исправить переведённый код с Pascal»
textual
Листинг программы
static bool canbe(string s)
{
if (s.Length == 0) return false;
for (int k = 0; k < s.Length; k++)
{
if (s[k] < '0' || s[k] > '4')
{
return false;
}
}
return true;
}
static int ToDec(string s)
{
int c = 0, Result = 0;
for (int i = 1; i <= s.Length; i++) // 1001
{
c = s[i-1] - '0';
Result += c * (int)Math.Round(Math.Pow(5, s.Length - i));
}
return Result;
}
static void Main(string[] args)
{
string s1, s = Console.ReadLine();
int i = 0, k = 0;
while (i < s.Length)
{
while ((s[i] == ' ' || s[i] == ',') && i < s.Length)
{
i++;
}
s1 = "";
while (i < s.Length-1)
{
if (s[i] == ' ' || s[i] == ',' || s[i] == '.') break;
s1 += s[i];
i++;
}
if (canbe(s1)) k += ToDec(s1);
i++;
}
Console.WriteLine(k);
}