Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 22
1

Все согласные буквы, стоящие между гласными, сделать маленькими

08.01.2012, 14:28. Просмотров 1615. Ответов 7
Метки нет (Все метки)

Люди помогите с задачкой. Ни как не пойму как реаизовать это в коде -
Все согласные буквы, стоящие между гласными, сделать маленькими.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.01.2012, 14:28
Ответы с готовыми решениями:

Большие согласные буквы сделать маленькими
Вводится несколько строк. Большие согласные буквы нужно сделать маленькими. Помогите пожалуйста,...

Сделать маленькими все буквы в тех словах, в которых нет ни одной буквы, встречающейся в последнем слове строки.
Помогите разобраться с задачей по практике, что только не пробовал, программа упорно отказывается...

Выяснить, все ли согласные буквы слова Х, стоящие на четных местах, различны
Помогите, пожалуйста, написать программу на c# с пояснениями, если не сложно

Выяснить, все ли согласные буквы слова Х, стоящие на четных местах, различны
Пожалуйста помогите мне составить программу, завтра экзамен, а у меня ничего не получается......

7
28 / 28 / 5
Регистрация: 15.12.2009
Сообщений: 40
08.01.2012, 16:48 2
Примерно так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();
            bool end = false;
            string str = "ПОЛИТИНФОРМАЦИЯ";
 
            for (int i = 0; i < str.Length-2; i++)
            {
                if (IsConsonant(str[i]) && IsVowel(str[i + 1]) && IsConsonant(str[i + 2]))
                {
                    sb.Append(str[i].ToString().ToLower());
                    sb.Append(str[i + 1]);
                    sb.Append(str[i + 2].ToString().ToLower());
 
                    if (i + 2 == str.Length - 1)
                        end = true;
                    i+=2;
                }
                else if (i != 0 && IsConsonant(str[i - 1]) && IsVowel(str[i]) && IsConsonant(str[i + 1]))
                {
                    sb.Append(str[i]);
                    sb.Append(str[i + 1].ToString().ToLower());
 
                    if (i + 1 == str.Length - 1)
                        end = true;
                    i++;
                }
                else
                    sb.Append(str[i]);
            }
 
            if (end == false)
            {
                sb.Append(str[str.Length - 2]);
                sb.Append(str[str.Length - 1]);
            }
 
            Console.WriteLine(sb);
            Console.ReadKey();
        }
 
        public static bool IsVowel(char ch)
        {
            bool vowel = Regex.IsMatch(ch.ToString(), @"[АЕЁИОУЫЭЮЯ]");
   
            if (vowel == true)
                return true;
            else
                return false;
        }
 
        public static bool IsConsonant(char ch)
        {
            bool consonant = Regex.IsMatch(ch.ToString(), @"[БВГДЖЗЙКЛМНПРСТФХЦЧШЩЪЬ]");
 
            if (consonant == true)
                return true;
            else
                return false;
        }
    }
0
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 22
09.01.2012, 00:39  [ТС] 3
Alina_Harlan огромное спасибо!!!!!!!!!!!!!


Добавлено через 52 секунды
0
Эксперт .NET
14697 / 11111 / 2919
Регистрация: 17.09.2011
Сообщений: 18,650
09.01.2012, 01:16 4
Alina_Harlan, с вашего позволения немножко покритикую ваш код.

1. Зачем нам два метода для нахождения гласной и согласной? Если буква не гласная, то оставшихся вариантов не много. А то получается как в
анекдоте
"Перед сном программист ставит рядом с кроватью два стакана: полный - на случай если захочет пить, и пустой - на случай, если не захочет"
.

2. Сами методы очень интересно реализованы:
C#
1
2
3
4
5
6
            bool consonant = Regex.IsMatch(ch.ToString(), @"[БВГДЖЗЙКЛМНПРСТФХЦЧШЩЪЬ]");
 
            if (consonant == true)
                return true;
            else
                return false;
Можно ведь одной строчкой:
C#
1
return Regex.IsMatch(ch.ToString(), @"[БВГДЖЗЙКЛМНПРСТФХЦЧШЩЪЬ]");
И все равно режет глаза использование регекса для такой простой операции и конвертирование символа в строку (привет, куча!).
Можно метод сделать так:
C#
1
2
3
4
static bool IsVowel(char c)
{
   return "АаЕеЁёИиОоУуЫыЭэЮюЯя".Contains(с);
}
Метод IsConsonant, разумеется, вообще выбросить.

Обход строки тоже интересно реализован.
Меняется на четыре строчки:
C#
1
2
3
4
5
string str = "ПОЛИТИНФОРМАЦИЯ";
StringBuilder sb = new StringBuilder(str);
for (int i = 1; i < sb.Length - 1; i++)
   if (!IsVowel(sb[i]) && IsVowel(sb[i-1]) && IsVowel(sb[i + 1]))
      sb[i] = char.ToLower(sb[i]);
А если не бояться пользоваться небезопасным кодом, то от объекта StringBuilder можно вообще избавиться.

Полный код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static void Main(string[] args)
{
    string str = "ПОЛИТИНФОРМАЦИЯ";
    StringBuilder sb = new StringBuilder(str);
    for (int i = 1; i < sb.Length - 1; i++)
        if (!IsVowel(sb[i]) && IsVowel(sb[i-1]) && IsVowel(sb[i + 1]))
            sb[i] = char.ToLower(sb[i]);
 
    Console.WriteLine(sb);
    Console.ReadKey(true);
}
 
static bool IsVowel(char c)
{
    return "АаЕеЁёИиОоУуЫыЭэЮюЯя".Contains(с);
}
Это так, альтернативное мнение. Уверен, вышеприведенный код можно сократить еще больше. Или как минимум оптимизировать.
1
28 / 28 / 5
Регистрация: 15.12.2009
Сообщений: 40
09.01.2012, 01:24 5
Спасибо за корректировки))

На словах "ЖНЕЦ" / "БАБОЧКА" не ратотает ваш код((

С номером 2 полностью согласна. Затупила, конечно))
0
Эксперт .NET
14697 / 11111 / 2919
Регистрация: 17.09.2011
Сообщений: 18,650
09.01.2012, 01:27 6
Цитата Сообщение от Alina_Harlan Посмотреть сообщение
На слове ЖНЕЦ не ратотает ваш код
Отчего же не работает? В слове "ЖНЕЦ" нет согласных, стоящих между гласными, потому на выходе получается то же самое слово.
Измените его на "ЖНЕЦЫ" и увидите разницу.

С "БАБОЧКА" работает - на выходе получается "БАбОЧКА"
0
28 / 28 / 5
Регистрация: 15.12.2009
Сообщений: 40
09.01.2012, 01:29 7
Согласна. Я опиралась на согласная-гласная-согласная - моя оплошность.
1
0 / 0 / 0
Регистрация: 06.12.2011
Сообщений: 22
19.01.2012, 04:13  [ТС] 8
спасибо вам ребят!!!!
 Комментарий модератора 
Если какой-либо пост на форуме показался вам полезным, нажмите кнопку "Спасибо" внизу самого поста.(Правила п.4.5)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.01.2012, 04:13

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выяснить, все ли согласные буквы слова Х, стоящие на четных местах, различны
Ошибся в заголовке не согласные, а все. Помогите, пожалуйста! Заранее спасибо, если не сложно с...

Все большие буквы в файле сделать маленькими
Все большие буквы сделать маленькими.Обработка текста производится без вывода обрабатываемого...

Удалить все символы, кроме латинских букв и цифр, а все большие лат. буквы сделать маленькими
всем привет, помогите исправить код программы. суть проги в том чтобы вводились множество символов...

У каждой строки из введенного набора все гласные латинские буквы сделать маленькими
Разработать функцию Change(const S:string):string, возвращающую строку, в которой все гласные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.