
Помогите перевести код с 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.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(c) ? 1 : 0;
k -= soglasnye_.Contains(c) ? 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;
}
}



Приведенный вами код на языке Pascal выполняет следующие действия: 1. Создает массив строк T_str из 10 элементов, каждый из которых имеет длину 80 символов. 2. Создает множества символов alf, gls и sogl. 3. Запрашивает у пользователя количество слов (не более 10) и сами слова в верхнем регистре. 4. Для каждого введенного слова подсчитывает количество гласных и согласных букв. 5. Затем добавляет слова, в которых больше гласных, чем согласных, в новый массив new. 6. Выводит исходный массив слов и массив новых слов, где гласных больше.
Перепишем этот код на C#:
```csharp using System; using System.Collections.Generic;
class Program
{
static void Main()
{
List
Console.WriteLine("Введите количество слов (не более 10):"); kol = int.Parse(Console.ReadLine());
Console.WriteLine("Введите слова в верхнем регистре:"); for (int i = 0; i < kol; i++) { Console.Write($"Введите {i + 1}-е слово: "); string word = Console.ReadLine(); s.Add(word); kolg = 0; kolsg = 0;
foreach (char letter in word) { if (gls.Contains(letter)) { kolg++; } else { kolsg++; } }
if (kolg > kolsg) { newWords.Add(word); schet++; } }
Console.WriteLine("\nИсходный массив слов:"); foreach (string word in s) { Console.Write($"{word} "); }
Console.WriteLine("\n\nСлова, где больше гласных:"); foreach (string word in newWords) { Console.Write($"{word} "); } } } ```
Этот код выполняет аналогичные действия на языке C#.


Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili