Помогите перевести код с Pascal на c#
program glas;
uses crt;
type T_str=array[1..10] of string[80];
T_set=set of char;
var s,new: T_str;
alf,gls,sogl: T_set;
kol,i,j,kolg,kolsg,schet:byte;
prom: string;
begin
clrscr;
textcolor(green);
schet:=1;
kolg:=0; kolsg:=0;
alf:=['A'..'Z'];
gls:=['A','E','I','O','U','Y'];
sogl:=['B','C','D','F','G','H','J','K',
'L','M','N','P','Q','R','S','T','V','W','X'];
writeln;

writeln(' Vvedite kol-vo slov(ne > 10 !):');
readln(kol);
writeln;
textcolor(red);
writeln(' VVODIM TOLKO ZAGLAVNIMI !!!');
textcolor(green);
writeln;
for i:=1 to kol do
begin
writeln(' vvod ',i,'-go slova:');
readln(s[i]);
prom:=s[i];
kolg:=0; kolsg:=0;
for j:=1 to length(prom) do
begin
if (prom[j] in gls) then
kolg:=kolg+1
else kolsg:=kolsg+1;
end;
if kolg>kolsg then
begin
new[schet]:=prom;
schet:=schet+1;
end;
end;
clrscr;
writeln;


writeln(' IsHodnii massiv slov:');
writeln;
for i:=1 to kol do
begin
write(' ',s[i]);
end;
readkey;
writeln;writeln;


writeln(' Slova gde > glas.');
writeln;
for i:=1 to schet do
begin
write(' ',new[i]);
end;
readkey;
end.

Using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

internal static class Program
{
    private const string glasnye_ = «aeiouy»;
    private const string soglasnye_ = «bcdfghjklmnpqrstvwxz»;

    private static void Main()
    {
        try
        {
            Console.WriteLine(«Введите строку слов (любые символы будут считаться разделителями)»);
            var s = Console.ReadLine();
            Console.WriteLine($«Гласных больше чем согласных:\n {Task1(s).Aggregate(»", (current, t) => current + t.ToUpper() + " ")}");
            Console.WriteLine();
            Console.WriteLine($«Гласных больше чем согласных:\n {Task1Regex(s).Aggregate(»", (current, t) => current + t.ToUpper() + " ")}");
            Console.ReadLine();
        }
        catch(Exception e)
        {
            Console.WriteLine(e);
            Console.ReadLine();
        }
    }

    private static IEnumerable<string> Task1(string s)
    {
        Console.ForegroundColor = ConsoleColor.Cyan;
        Console.WriteLine(«Без помощи регулярных выражений»);

        var words = s.Split(new[] {' ', '-', ',', '.', '*', ':', ';', '_'}, StringSplitOptions.RemoveEmptyEntries).ToList();

        var sb = new StringBuilder();
        for (var i = 0; i < words.Count; i++)
            sb.AppendLine($«Слово[{i}] = {words[i].ToUpper()}»);

        Console.Write(sb.ToString());

        var result = new List<string>();

        foreach (var word in words)
        {
            var k = 0;
            foreach (var c in word.ToLower().ToCharArray())
            {
                k += glasnye_.Contains©? 1: 0;
                k -= soglasnye_.Contains©? 1: 0;
            }

            if (k > 0)
                result.Add(word);
        }

        return result;
    }

    private static IEnumerable<string> Task1Regex(string s)
    {
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine(«С регулярными выражениями»);

        var ms = Regex.Matches(s, @"[A-z]+", RegexOptions.IgnoreCase);

        var sb = new StringBuilder();
        for (var i = 0; i < ms.Count; i++)
            sb.AppendLine($«Слово[{i}] = {ms[i].Value.ToUpper()}»);

        Console.Write(sb.ToString());

        var result = new List<string>();
        for (var i = 0; i < ms.Count; i++)
        {
            var v = ms[i].Value;
            var k = Regex.Matches(v, $"[{glasnye_}]", RegexOptions.IgnoreCase).Count;
            k -= Regex.Matches(v, $"[{soglasnye_}]", RegexOptions.IgnoreCase).Count;
            if (k > 0)
                result.Add(v);
        }

        return result;
    }
}


Оцени ответ
Не нашёл ответ?

Если тебя не устраивает ответ или его нет, то попробуй воспользоваться поиском на сайте и найти похожие ответы по предмету Информатика.

Найти другие ответы

Загрузить картинку
© Задачки.net