Исправить переведённый код с Pascal - C#

Узнай цену своей работы

Формулировка задачи:

Сам код на Паскале:
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);
        }
    }
}
Помогите исправить, заранее спасибо. Вот что вводится в программу: 100 у3 AS42 AS 22 77w. Вывод: 37

Решение задачи: «Исправить переведённый код с 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);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5