
Помогите с программой на c# Дан массив из n слов произвольной длины (длина слова не превышает 80
символов). Символами могут быть только заглавные латинские буквы. Найти и вывести все слова, у которых число гласных букв превышает число согласных

Ответы на вопрос

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;
}
}



Задача: Поиск слов с числом гласных букв, превышающим числом согласных
Для решения данной задачи на C# можно использовать следующий алгоритм:
1. Создать массив из n слов произвольной длины. 2. Пройтись по каждому слову в массиве. 3. Для каждого слова подсчитать количество гласных и согласных букв. 4. Если количество гласных букв превышает количество согласных, вывести это слово.
Вот пример кода на C#, реализующий описанный алгоритм:
```csharp using System;
class Program { static void Main() { // Создаем массив слов string[] words = { "apple", "banana", "orange", "grape", "kiwi" };
// Проходимся по каждому слову foreach (string word in words) { // Подсчитываем количество гласных и согласных букв int vowelsCount = 0; int consonantsCount = 0;
foreach (char letter in word.ToUpper()) { if (IsVowel(letter)) { vowelsCount++; } else if (IsConsonant(letter)) { consonantsCount++; } }
// Если количество гласных букв превышает количество согласных, выводим слово if (vowelsCount > consonantsCount) { Console.WriteLine(word); } } }
// Метод для проверки, является ли символ гласной буквой static bool IsVowel(char letter) { return letter == 'A' || letter == 'E' || letter == 'I' || letter == 'O' || letter == 'U'; }
// Метод для проверки, является ли символ согласной буквой static bool IsConsonant(char letter) { return !IsVowel(letter) && char.IsLetter(letter); } } ```
В данном примере мы создали массив `words` с пятью словами. Затем мы проходимся по каждому слову и подсчитываем количество гласных и согласных букв в каждом слове. Если количество гласных букв превышает количество согласных, выводим это слово.
Примечание: В данном примере я использовал предопределенный набор гласных букв (A, E, I, O, U) и проверку на то, является ли символ буквой с помощью метода `char.IsLetter()`. Если вам нужно учесть другие гласные буквы или условия, вы можете изменить код соответствующим образом.
Надеюсь, это поможет вам решить задачу! Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их.


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