Вопрос задан 09.01.2020 в 17:41. Предмет Информатика. Спрашивает Усманов Азам.

Помогите с программой на c# Дан массив из n слов произвольной длины (длина слова не превышает 80

символов). Символами могут быть только заглавные латинские буквы. Найти и вывести все слова, у которых число гласных букв превышает число согласных
0 0
Перейти к ответам

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

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Ракович Ольга.
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(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;
    }
}


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Задача: Поиск слов с числом гласных букв, превышающим числом согласных

Для решения данной задачи на 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()`. Если вам нужно учесть другие гласные буквы или условия, вы можете изменить код соответствующим образом.

Надеюсь, это поможет вам решить задачу! Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их.

0 0

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос