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

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

28.02.2016, 20:07. Просмотров 1325. Ответов 7
Метки нет (Все метки)

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

2)Модифицировать предыдущее задание следующим образом:
-для букв, слов, предложений, знаков препинания и текста создать отдельные классы. Слово должно состоять из массива букв, предложения из массива слов и знаков препинания, текст из массива предложений. Заменить последовательность табуляций и пробелов одним пробелом.
-создать класс, состоящий из исполнительного метода, который выполняет описанное действие с предыдущего задания, но в качестве типов использует созданные классы.

Первое еще могу (точнее имею представление), но второе, может кто знает...
Вдруг Вам делать нечего), я понимаю это сложно?

В интернете нашла следующее

C#
1
2
3
4
5
6
7
8
StringBuilder sb = new StringBuilder();
    sb.AppendLine("3333");
    sb.AppendLine("2222");
    sb.AppendLine("1111");
 
    List<string> items = new List<string>(sb.ToString().Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries));
    items.Sort();
    sb = new StringBuilder(string.Join("\r\n", items.ToArray()));
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2016, 20:07
Ответы с готовыми решениями:

Найти в файле слова, начинающиеся с гласных букв
Кто сможет помогите) написано на с++ необходимо на с#. ...

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

Напечатать все слова, входящие в текстовую строку, начинающиеся с букв заданного слова
Даны текстовая строка и слово (например, ba). Напечатать все слова, входящие в эту текстовую...

Напечатать все слова, входящие в текстовую строку, начинающиеся с букв заданного слова
Даны текстовая строка и слово (например, ba). Напечатать все слова, входящие в эту текстовую...

7
111 / 111 / 64
Регистрация: 03.06.2013
Сообщений: 584
28.02.2016, 20:18 2
Марина_Киев_КПИ, Мне кажется что сортировать можно как угодно, а вот для сбора всей этой ерунды использовать string.Builder так как является mutable. А вторая задача : условие так и дано, или вы так мастерски его сюда переписали?
0
-21 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 97
28.02.2016, 20:40  [ТС] 3
MaxSlim, переписала правильно, так как и дано в задании
предущее задание это "1)"

Добавлено через 3 минуты
Storm23, создала тему, здесь вот.
0
111 / 111 / 64
Регистрация: 03.06.2013
Сообщений: 584
28.02.2016, 20:53 4
Марина_Киев_КПИ, ну тогда так: отделяете слова от преложения с помощью регулярки или метода Split() и работаете с массивом или коллекцией строк(слов). В чем проблема, как сравнить?
0
-21 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 97
28.02.2016, 20:55  [ТС] 5
MaxSlim, проблема в обрамке этого всего в класс и метод, сам алгоритм не сложный, просто хотелось бы пример как это все описать
0
111 / 111 / 64
Регистрация: 03.06.2013
Сообщений: 584
28.02.2016, 21:03 6
Марина_Киев_КПИ, не знаю как будет правильно, но я бы сделал так: создал класс, в нем приватная переменная типа List<string> , далее метод в классе сделать который парсит предложение и сохраняет все слова в этой переменной. Ну и сделать метод который возвращает уже отсортированную коллекцию.
0
Эксперт .NETАвтор FAQ
9550 / 4711 / 1686
Регистрация: 11.01.2015
Сообщений: 5,881
Записей в блоге: 34
28.02.2016, 21:44 7
Лучший ответ Сообщение было отмечено Марина_Киев_КПИ как решение

Решение

Цитата Сообщение от Марина_Киев_КПИ Посмотреть сообщение
-для букв, слов, предложений, знаков препинания и текста создать отдельные классы. Слово должно состоять из массива букв, предложения из массива слов и знаков препинания, текст из массива предложений. Заменить последовательность табуляций и пробелов одним пробелом.
-создать класс, состоящий из исполнительного метода, который выполняет описанное действие с предыдущего задания, но в качестве типов использует созданные классы.
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
using System.Collections.Generic;
using System.Text;
 
namespace ConsoleApplication207
{
    class Program
    {
        static void Main(string[] args)
        {
            var text = Text.Parse("Мама мыла раму, а папа мыл аккордеон. Детишки весело играли, пока Матроскин воблу жрал.");
 
            //get words from all sentences
            var words = new List<Word>();
            foreach (var sent in text)
            foreach (var word in sent)
            if(word is Word)
                words.Add(word as Word);
 
            //sort
            words.Sort(new WordComparer());
 
            //output
            foreach(var w in words)
                Console.WriteLine(w);
 
            Console.ReadLine();
        }
    }
 
    class Letter
    {
        public Char Value;
    }
 
    interface ISentenceToken
    {
    }
 
    class Punctuation : ISentenceToken
    {
        public Char Value;
    }
 
    class Word : List<Letter>, ISentenceToken
    {
        public override string ToString()
        {
            var sb = new StringBuilder();
            foreach (var c in this)
                sb.Append(c.Value);
 
            return sb.ToString();
        }
    }
 
    class Sentence : List<ISentenceToken>
    {
    }
 
    class Text : List<Sentence>
    {
        public static Text Parse(string text)
        {
            //state machine
 
            var res = new Text();
            var sentence = new Sentence();
            var word = new Word();
 
            foreach(var c in text)
            {
                if (char.IsPunctuation(c) || char.IsSeparator(c))
                {
                    if (word.Count > 0)
                    {
                        sentence.Add(word);
                        word = new Word();
                    }
 
                    switch (c)
                    {
                        case '.':
                        case '!':
                        case '?':
                            res.Add(sentence);
                            sentence.Add(new Punctuation { Value = c });
                            sentence = new Sentence();
                            break;
                        case '\r':
                        case '\n':
                        case '\t':
                        case ' ': break;//ignore space symbols
                        default:
                            sentence.Add(new Punctuation { Value = c });
                            break;
                    }
                }
                else
                    word.Add(new Letter{Value = c});
            }
 
            return res;
        }
    }
 
    class WordComparer : IComparer<Word>
    {
        public int Compare(Word x, Word y)
        {
            //compare words by second letter (only if the words start with vowel letter)
            if (x.Count == 0 || y.Count == 0) return x.Count.CompareTo(y.Count);
            if (!IsVowel(x[0].Value) || !IsVowel(y[0].Value)) return IsVowel(x[0].Value).CompareTo(IsVowel(y[0].Value));
            if (x.Count < 2 || y.Count < 2) return x.Count.CompareTo(y.Count);
            return x[1].Value.CompareTo(y[1].Value);
        }
 
        bool IsVowel(char c)
        {
            return "уеыаоэяию".Contains(char.ToLower(c).ToString());
        }
    }
}
Отсортировать слова заданного текста, начинающиеся с гласных букв, по второй букве
1
-21 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 97
28.02.2016, 22:10  [ТС] 8
Storm23, cпасибо, а я вот такое своими силами пытаюсь
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 private HashSet<char> vowels = new HashSet<char>(new char[] { 'а', 'у', 'о', 'ы', 'и', 'э', 'я', 'ю', 'ё', 'е' });
            public int Compare(string left)
            {
                bool leftVowel = vowels.Contains(Char.ToLowerInvariant(left[1]));                
                if (leftVowel)
                {
                    return left.CompareTo(right);
                }
                else
                {
                    return leftVowel ? -1 : 1;
                }
            }
нашла на стокфлоу, модифицирую

увидела, в нижней части у вас такое же идет. Спасибо)

Добавлено через 10 минут
А можно как-то эту тему удалить?

Добавлено через 4 минуты
Storm23, а что такое ISentenceToken? для чего он нужен и что делает?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2016, 22:10

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

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

Написать программу, которая считывает из файла и выводит на экран слова, начинающиеся с гласных букв
static void Main(string args) { string s=&quot;&quot;; string mas = new...

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

Строка: Отсортировать слова по первой букве...
Дан массив состоящий из слов. Отсортировать слова по первой букве.


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

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

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