Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 05.01.2018
Сообщений: 3
.NET 4.x

Проверить чередование гласных и согласных букв в словах строки

05.01.2018, 22:55. Показов 2917. Ответов 4

Студворк — интернет-сервис помощи студентам
«Вывести те слова данной строки, которые отличны от последнего слова и при этом выполняется условие - гласные буквы [ а е и о у ] чередуются с согласными.»

Задачу необходимо выполнить, без использования каких-там-либо помогалок из System.String, Array и т.д... Только циклы, только хардкор!

Вот сам алгоритм:
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
    private void Button_Start_Click(object sender, EventArgs e)
    {
        int C1 = 0, C2 = 0, C3 = 0;
        string[] Phrase = new string[Field_Input.Text.Length-1];
 
        foreach ( char Symbol in Field_Input.Text )
            if ( Symbol != ' ' ) Phrase[C1] += Symbol;
            else C1++;
 
        while ( C2 <= Phrase.Length-1 )
        {
            bool? Check = null;
            while (C3 <= Phrase[C2].Length-2 )
            {
            if (( Phrase[C2][C3]   == ('а'|'е'|'и'|'о'|'у'|'А'|'Е'|'И'|'О'|'У')
               && Phrase[C2][C3+1] == ('Б'|'В'|'Г'|'Д'|'Ж'|'З'|'Й'|'К'|'Л'|'М'|'Н'|'П'|'Р'|'С'|'Т'|'Ф'|'Х'|'Ц'|'Ч'|'Ш'|'Щ'
                                      |'б'|'в'|'г'|'д'|'ж'|'з'|'й'|'к'|'л'|'м'|'н'|'п'|'р'|'с'|'т'|'ф'|'х'|'ц'|'ч'|'ш'|'щ'))
              ||( Phrase[C2][C3+1] == ('а'|'е'|'и'|'о'|'у'|'А'|'Е'|'И'|'О'|'У')
               && Phrase[C2][C3]   == ('Б'|'В'|'Г'|'Д'|'Ж'|'З'|'Й'|'К'|'Л'|'М'|'Н'|'П'|'Р'|'С'|'Т'|'Ф'|'Х'|'Ц'|'Ч'|'Ш'|'Щ'
                                      |'б'|'в'|'г'|'д'|'ж'|'з'|'й'|'к'|'л'|'м'|'н'|'п'|'р'|'с'|'т'|'ф'|'х'|'ц'|'ч'|'ш'|'щ')))
              Check = true;
            else { Check = false; break; }
            C3++;
            }
            if (Check == true )  Label_Res.Text += Phrase[C2];
            C2++;
        }
    }
}
Вот форма:
Кликните здесь для просмотра всего текста

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
using System;
using System.Drawing;
using System.Windows.Forms;
 
class G : Form
{
    static void Main() { Application.Run(new G()); }
    G() { InitializeComponent(); }
    void InitializeComponent()
    {
 
        Field_Input = new RichTextBox();
        Label_Task = new Label();
        Label_Res = new Label();
        Button_Start = new Button();
 
        Label_Task.BorderStyle = BorderStyle.FixedSingle;
        Label_Task.Text = "Task context: «Вывести те слова данной строки, которые отличны от последнего слова и при этом выполняется условие - гласные буквы [ а е и о у ] чередуются с согласными.»";
        Label_Task.BackColor = Color.Tan;
        Label_Task.Font = new Font("Anonymous Pro", 12F, (FontStyle.Bold | FontStyle.Italic));
        Label_Task.Location = new Point(8, 8);
        Label_Task.Size = new Size(776, 56);
 
        Field_Input.Font = new Font("Anonymous Pro", 14F, FontStyle.Bold);
        Field_Input.Text = "Сатана Бафомет Гилмор ЛаВей Иисус Яхве Гавриил Моисей";
        Field_Input.BackColor = Color.PaleGoldenrod;
        Field_Input.Cursor = Cursors.IBeam;
        Field_Input.Location = new Point(8, 72);
        Field_Input.Size = new Size(776, 216);
        Field_Input.TabIndex = 0;
 
        Button_Start.BackColor = Color.LemonChiffon;
        Button_Start.Text = "Calculate";
        Button_Start.Cursor = Cursors.Hand;
        Button_Start.Font = new Font("Anonymous Pro", 16F, (FontStyle.Bold | FontStyle.Underline));
        Button_Start.Location = new Point(8, 296);
        Button_Start.Size = new Size(776, 30);
        Button_Start.TabIndex = 1;
        Button_Start.Click += Button_Start_Click;
 
        Label_Res.BorderStyle = BorderStyle.FixedSingle;
        Label_Res.Text = " Result:  ";
        Label_Res.BackColor = Color.Tan;
        Label_Res.Font = new Font("Anonymous Pro", 14F, FontStyle.Bold);
        Label_Res.Location = new Point(8, 336);
        Label_Res.Size = new Size(776, 129);
 
        AcceptButton = Button_Start;
        BackColor = Color.Khaki;
        ClientSize = new Size(792, 473);
        FormBorderStyle = FormBorderStyle.FixedToolWindow;
        Text = "«Одномерные массивы» : Label_Task 2 - Unit 7";
        Font = new Font("Anonymous Pro", 14F, FontStyle.Bold);
 
        Controls.Add(Label_Task);
        Controls.Add(Label_Res);
        Controls.Add(Button_Start);
        Controls.Add(Field_Input);
    }
 
    private static Label Label_Task, Label_Res;
    private static Button Button_Start;
    private static RichTextBox Field_Input;


При нажатии на кнопку <Button_Start>, выбрасывает исключение:
System.NullReferenceException: Object reference not set to an instance of an object...
Кликните здесь для просмотра всего текста

at G.Button_Start_Click (System.Object sender, System.EventArgs e) [0x00100] in <7c61d9f2383d4e3cae8550b436cbe506>:0

at System.Windows.Forms.Control.OnClick (System.EventArgs e) [0x00019] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.Button.OnClick (System.EventArgs e) [0x0001e] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.ButtonBase.OnMouseU p (System.Windows.Forms.MouseEventArgs mevent) [0x00069] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.Button.OnMouseUp (System.Windows.Forms.MouseEventArgs mevent) [0x00000] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00078] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x001b4] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.ButtonBase.WndProc (System.Windows.Forms.Message& m) [0x00037] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.Button.WndProc (System.Windows.Forms.Message& m) [0x00000] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.Control+ControlWind owTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.Control+ControlNati veWindow.WndProc (System.Windows.Forms.Message& m) [0x0000b] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0

at System.Windows.Forms.NativeWindow.WndPro c (System.IntPtr hWnd, System.Windows.Forms.Msg msg, System.IntPtr wParam, System.IntPtr lParam) [0x00085] in <d9f89353a13a4fdc9c5c1b15fc5a7d90>:0


< Phrase[C2][C3] > - от такой "формы записи" я ожидаю следующее:
Phrase[C2] обращается к элементу C2 в массиве Phrase[], а Phrase[C2][C3], в свою очередь, обращается к символу char C3 в полученном элементе C2 (подстроке).

Пробовал то же самое записывать через for, разницы никакой.

Пишу под Моно, на Дженте, запустил Венду на виртуалке - та же история...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.01.2018, 22:55
Ответы с готовыми решениями:

Массив символов: чередование гласных и согласных букв, симметрия
Добрый день! Нужна помощь! Не могу решить эту задачу. Возможно сам алгоритм неправильный. Я уже и не знаю. Знаю явно, что много чего...

Подсчитать количество слов, являющихся регулярными цепочками и в которых имеется чередование гласных и согласных букв
На языке Си ЗАДАНИЕ: Дана последовательность слов, которую необходимо преобразовать или определить ее характеристики согласно...

В каких словах предложения гласных букв больше чем согласных?
Товарищи! Это снова я, и я снова нуждаюсь в вашей помощи. Желательно бы как можно быстрее. Дана задача: В каких словах предложения гласных...

4
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18258 / 14183 / 5366
Регистрация: 17.03.2014
Сообщений: 28,870
Записей в блоге: 1
06.01.2018, 02:37
MrQwent, нвдо думать что какие-то элементы в массиве Phrase остаются равными null. Проверь с помощью отладчика.

Цитата Сообщение от MrQwent Посмотреть сообщение
C#
1
Phrase[C2][C3] == ('а'|'е'|'и'|'о'|'у'|'А'|'Е'|'И'|'О'|'У')
Если таким образом ты хотел проверить является ли буква одной из указанных, то ты ошибаешься. Оператор | в данном случае работает не как логический ИЛИ, а как битовый который дает значение 1151 соответствующее букве ѿ. Правильнее будет так:
C#
1
"аеиоуАЕИОУ".IndexOf(Phrase[C2][C3]) != -1
1
0 / 0 / 0
Регистрация: 05.01.2018
Сообщений: 3
06.01.2018, 03:17  [ТС]
OwenGlendower, спасибо! Сейчас проверю массив на значения null.
Однако использовать String.IndexOf() в моем случае запрещено. Нужно реализовать это "вручную", через тупой перебор.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18258 / 14183 / 5366
Регистрация: 17.03.2014
Сообщений: 28,870
Записей в блоге: 1
06.01.2018, 13:39
MrQwent, в таком случае записывай условие польностью
C#
1
2
(Phrase[C2][C3] == 'а' || Phrase[C2][C3] == 'е' || Phrase[C2][C3] == 'и' || Phrase[C2][C3] == 'о' || Phrase[C2][C3] == 'у'
Phrase[C2][C3] == 'А' || Phrase[C2][C3] == 'Е' || Phrase[C2][C3] == 'И' || Phrase[C2][C3] == 'О' || Phrase[C2][C3] == 'У')
0
0 / 0 / 0
Регистрация: 05.01.2018
Сообщений: 3
06.01.2018, 18:15  [ТС]
OwenGlendower, спасибо. В массиве <Phrase> действительно создается много лишних элементов со значение <null>.
Ошибка в этой строке:
C#
1
 string[] Phrase = new string[Field_Input.Text.Length-1];
Размер массива получается равным количеству символов во входной строке. Очевидно, что это не то, что нужно.
Переделал как-то так, через количество пробелов + первое слово:
C#
1
2
3
4
5
6
int Array_Length = 1;
 
for ( int Index = 0;  Index < Field_Input.Text.Length-1;  Index++ )
if ( Field_Input.Text[Index] == ' ' )  Array_Length++;
 
string[] Phrase = new string[Array_Length];
Добавлено через 4 часа 14 минут
В общем, вот работающий код... Кто знает, может потомкам пригодится.
(да, проверка условия страшная, есть такое)

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.Drawing;
using System.Windows.Forms;
 
class G : Form
{
   static void Main() { Application.Run  (  new G()  ); }
   G() { InitializeComponent(); }
   void InitializeComponent()
   {
    Input = new RichTextBox();
    Task = new Label();
    Result = new Label();
    Button = new Button();
 
    Task.BorderStyle = BorderStyle.FixedSingle;
    Task.Text = "«Вывести слова, которые отличны от последнего слова и при этом гласные буквы < а е и о у > чередуются с согласными.»";
    Task.BackColor = Color.Tan;
    Task.Font = new Font  ( "Anonymous Pro", 15F );
    Task.Location = new Point  (  8, 8  );
    Task.Size = new Size  (  776, 56  );
 
    Input.Font = new Font  (  "Anonymous Pro", 14F, FontStyle.Bold  );
    Input.Text = "Сатана Бафомет ЛаВей Яхве Иисус Моисей";
    Input.BackColor = Color.PaleGoldenrod;
    Input.Cursor = Cursors.IBeam;
    Input.Location = new Point  (  8, 72  );
    Input.Size = new Size  (  776, 216  );
    Input.TabIndex = 0;
 
    Button.BackColor = Color.LemonChiffon;
    Button.Text = "FILTER";
    Button.Cursor = Cursors.Hand;
    Button.Font = new Font  (  "Anonymous Pro", 16F, (  FontStyle.Bold | FontStyle.Underline  ));
    Button.Location = new Point  (  8, 296  );
    Button.Size = new Size  (  776, 30  );
    Button.TabIndex = 1;
    Button.Click += Button_Click;
 
    Result.BorderStyle = BorderStyle.FixedSingle;
    Result.Text = " Result:  ";
    Result.BackColor = Color.Tan;
    Result.Font = new Font  (  "Anonymous Pro", 14F, FontStyle.Bold  );
    Result.Location = new Point  (  8, 336  );
    Result.Size = new Size  (  776, 129  );
 
    AcceptButton = Button;
    BackColor = Color.Khaki;
    ClientSize = new Size  (  792, 473  );
    FormBorderStyle = FormBorderStyle.FixedToolWindow;
    Text = "«Строки» : Task 2 - Unit 6";
    Font = new Font  (  "Anonymous Pro", 14F, FontStyle.Bold  );
 
    Controls.Add(Task);
    Controls.Add(Input);
    Controls.Add(Button);
    Controls.Add(Result);
   }
   private static RichTextBox Input;
   private static Label Task, Result;
   private static Button Button;
 
 
   private void Button_Click  (  object sender, EventArgs e  )
   {
    Result.Text = " Result:  ";
    int  i1 = 0,  i2 = 0,  Count = 0,  Length = 1;
    for ( i1  =  0;  i1 <=  Input.Text.Length-1;  i1++ )
        if ( Input.Text[i1] == ' ' )   Length++;
    string[] S = new string[Length];
 
    for ( i1  =  0;  i1 <=  Input.Text.Length-1;  i1++ )
        if ( Input.Text[i1] != ' ' )  S[Count] += Input.Text[i1];
        else Count++;
 
    for ( i1  =  0;  i1 <=  S.Length-1;  i1++ )
    {
        bool Check = false;
        if  ( S[i1]  !=  S[S.Length-1] )
            for ( i2  =  0;  i2 <=  S[i1].Length-2;  i2++ )
                if  (((S[i1][i2]=='а' | S[i1][i2]=='е' | S[i1][i2]=='и' | S[i1][i2]=='о' | S[i1][i2]=='у'  |  S[i1][i2]=='А' | S[i1][i2]=='Е' | S[i1][i2]=='И' | S[i1][i2]=='О' | S[i1][i2]=='У')  &  (S[i1][i2+1]=='б' | S[i1][i2+1]=='в' | S[i1][i2+1]=='г' | S[i1][i2+1]=='д' | S[i1][i2+1]=='ж' | S[i1][i2+1]=='з' | S[i1][i2+1]=='й' | S[i1][i2+1]=='к' | S[i1][i2+1]=='л' | S[i1][i2+1]=='м' | S[i1][i2+1]=='н' | S[i1][i2+1]=='п' | S[i1][i2+1]=='р' | S[i1][i2+1]=='с' | S[i1][i2+1]=='т' | S[i1][i2+1]=='ф' | S[i1][i2+1]=='х' | S[i1][i2+1]=='ц' | S[i1][i2+1]=='ч' | S[i1][i2+1]=='ш' | S[i1][i2+1]=='щ' | S[i1][i2+1]=='Б' | S[i1][i2+1]=='В' | S[i1][i2+1]=='Г' | S[i1][i2+1]=='Д' | S[i1][i2+1]=='Ж' | S[i1][i2+1]=='З' | S[i1][i2+1]=='Й' | S[i1][i2+1]=='К' | S[i1][i2+1]=='Л' | S[i1][i2+1]=='М' | S[i1][i2+1]=='Н' | S[i1][i2+1]=='П' | S[i1][i2+1]=='Р' | S[i1][i2+1]=='С' | S[i1][i2+1]=='Т' | S[i1][i2+1]=='Ф' | S[i1][i2+1]=='Х' | S[i1][i2+1]=='Ц' | S[i1][i2+1]=='Ч' | S[i1][i2+1]=='Ш' | S[i1][i2+1]=='Щ'))   |   ((S[i1][i2]=='б' | S[i1][i2]=='в' | S[i1][i2]=='г' | S[i1][i2]=='д' | S[i1][i2]=='ж' | S[i1][i2]=='з' | S[i1][i2]=='й' | S[i1][i2]=='к' | S[i1][i2]=='л' | S[i1][i2]=='м' | S[i1][i2]=='н' | S[i1][i2]=='п' | S[i1][i2]=='р' | S[i1][i2]=='с' | S[i1][i2]=='т' | S[i1][i2]=='ф' | S[i1][i2]=='х' | S[i1][i2]=='ц' | S[i1][i2]=='ч' | S[i1][i2]=='ш' | S[i1][i2]=='щ' | S[i1][i2]=='Б' | S[i1][i2]=='В' | S[i1][i2]=='Г' | S[i1][i2]=='Д' | S[i1][i2]=='Ж' | S[i1][i2]=='З' | S[i1][i2]=='Й' | S[i1][i2]=='К' | S[i1][i2]=='Л' | S[i1][i2]=='М' | S[i1][i2]=='Н' | S[i1][i2]=='П' | S[i1][i2]=='Р' | S[i1][i2]=='С' | S[i1][i2]=='Т' | S[i1][i2]=='Ф' | S[i1][i2]=='Х' | S[i1][i2]=='Ц' | S[i1][i2]=='Ч' | S[i1][i2]=='Ш' | S[i1][i2]=='Щ')  &  (S[i1][i2+1]=='а' | S[i1][i2+1]=='е' | S[i1][i2+1]=='и' | S[i1][i2+1]=='о' | S[i1][i2+1]=='у'  |  S[i1][i2+1]=='А' | S[i1][i2+1]=='Е' | S[i1][i2+1]=='И' | S[i1][i2+1]=='О' | S[i1][i2+1]=='У')))
                    Check = true;  else  { Check = false; break; }
 
        if ( Check == true )   Result.Text = Result.Text + ' ' + S[i1];
    }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.01.2018, 18:15
Помогаю со студенческими работами здесь

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

Сделать большими все буквы в тех словах, в которых согласных букв меньше гласных
Здравствуйте! Помогите, пожалуйста, написать программу. Сделать большими все буквы в тех словах, в которых согласных букв меньше...

Сделать маленькими все буквы в тех словах, в которых согласных букв больше гласных
Задание: Сделать маленькими все буквы в тех словах, в которых согласных букв больше гласных. И я снова застрял :) При нажатии на...

Сделать большими все буквы в тех словах, в которых согласных букв меньше гласных
Код представлен ниже, и почему то не работает, помогите пожалуйста ============================================== unit Unit1; ...

Чередование букв первой и второй строки с удалением одинаковых гласных
построить функцию на вход -две строки на выводе-одна строка, которая получается чередованием букв первой и второй строки при этом...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru