Исправить переведённый код с 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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д