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

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

05.01.2018, 22:55. Показов 2980. Ответов 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
18304 / 14228 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 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
18304 / 14228 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru