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