Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 10.05.2010
Сообщений: 30

Строки с палиндромами

13.05.2010, 11:17. Показов 1878. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дана строка, содержащая русский текст. Если в тексте нет слов - палиндромов длиной более 1-й буквы, то вывести слова текста в соответствии с убыванием количества согласных, в противном случае продублировать в словах текста гласные буквы и вывести полученные слова в порядке, обратном к алфавитному.
подскажите, как сделать эту задачу!
(палиндромы - слова, которые читаются одинаково и с конца: как, тот)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2010, 11:17
Ответы с готовыми решениями:

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

Удалить из строки слова являющиеся палиндромами
дана строка состоящая из слов между которыми стоит по одному пробелу. Необходимо удалить из строки слова являющиеся поляроидами. В...

Вывести строки массива строк, которые являются палиндромами
Помогоите решить чайнику 2 задачи по c++ . 2) Массив из M строк по N символов каждая. Необходимо вывести только те строки, которые...

4
 Аватар для kuroiryuu
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
13.05.2010, 12:26
Лучший ответ Сообщение было отмечено как решение

Решение

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

как сам понял из задания:
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
using System;
using System.Collections.Generic;
using System.Text;
 
public class Words
{
    string _string;
    char[] consonant = new char[] { 'й', 'ц', 'к', 'н', 'г', 'ш', 'щ', 'з', 'х', 'ъ', 'ф', 'в', 'п', 'р', 'л', 'д', 'ж', 'ч', 'с', 'м', 'т', 'ь', 'б' };
 
    public Words(string input)
    {
        _string = input;
    }
 
    private bool IsGetPalindrome()
    {
        string[] arr = _string.ToLower().Split(new char[] { '\t', '\n', ',', '.', ' ', ':', ';', '!', '?' }, StringSplitOptions.RemoveEmptyEntries);
 
        bool flag = false;
        foreach (string word in arr)
        {
            flag = false;
            for (int i = 0; i < word.Length / 2; i++)
            {
                if (word[i] == word[word.Length - 1 - i])
                    flag = true;
                else
                {
                    flag = false;
                    break;
                }
            }
            if (flag)
                return flag;
        }
        return flag;
    }
 
    private bool IsConsonant(char ch)
    {
        foreach (char _char in consonant)
        {
            if (ch == _char)
                return true;
        }
        return false;
    }
 
    private int CountOfConsonant(string input)
    {
        int count = 0;
 
        foreach (char ch in input)
            for (int i = 0; i < consonant.Length; i++)
                if (ch == consonant[i])
                    count++;
 
        return count;
    }
 
    private void Sort()
    { 
        string[] arr = _string.ToLower().Split(new char[] { '\t', '\n', ',', '.', ' ', ':', ';', '!', '?' }, StringSplitOptions.RemoveEmptyEntries);
 
        for (int i = 0; i < arr.Length; i++)
        {
            for (int j = 0; j < arr.Length; j++)
            { 
                int count1 = CountOfConsonant(arr[i]);
                int count2 = CountOfConsonant(arr[j]);
                if (count1 > count2)
                {
                    string tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
        }
 
        for (int i = 0; i < arr.Length; i++)
        {
            Console.Write("{0} ", arr[i]);
        }
        Console.WriteLine();
    }
 
    private void Sort2()
    {
        string[] arr = _string.ToLower().Split(new char[] { '\t', '\n', ',', '.', ' ', ':', ';', '!', '?' }, StringSplitOptions.RemoveEmptyEntries);       
 
        for (int i = 0; i < arr.Length; i++)
        {
            StringBuilder temp = new StringBuilder();
            for (int j = 0; j < arr[i].Length; j++)
            {
                temp.Append(arr[i][j]);
                if (!IsConsonant(arr[i][j]))
                    temp.Append(arr[i][j]);
           }
            arr[i] = temp.ToString();
        }
 
        for (int i = 0; i < arr.Length; i++)
        {
            for (int j = 0; j < arr.Length; j++)
            {
                if (arr[i].CompareTo(arr[j]) > 0)
                {
                    string tmp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = tmp;
                }
            }
        }
 
        for (int i = 0; i < arr.Length; i++)
        {
            Console.Write("{0} ", arr[i]);
        }
        Console.WriteLine();
    }
 
    public void Start()
    {
        if (IsGetPalindrome())
            Sort2();
        else
            Sort();
    }
}
 
 
class Demo
{
    public static void Main()
    {
        Words words = new Words("Там где пьют кони, лягушки не квакают!");
        words.Start();
        words = new Words("Кто не работает, тот ест!");
        words.Start();
    }
}
3
0 / 0 / 0
Регистрация: 10.05.2010
Сообщений: 30
14.05.2010, 13:56  [ТС]
Вы сделали все правильно. А как здесь сделать массив из слов, которые составляют строчку?
0
 Аватар для kuroiryuu
328 / 312 / 68
Регистрация: 05.11.2009
Сообщений: 712
14.05.2010, 15:39
C#
1
string[] arr = _string.ToLower().Split(new char[] { '\t', '\n', ',', '.', ' ', ':', ';', '!', '?' }, StringSplitOptions.RemoveEmptyEntries);
возвращает массив слов из строки (в строчные преобразовывал, чтобы не мучиться с прописными)
1
0 / 0 / 0
Регистрация: 10.05.2010
Сообщений: 30
15.05.2010, 01:35  [ТС]
Не я не о том. Посмотрите пожалуйста эту задачу.
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
/* Дана строка, содержащая русский текст. Вывести в порядке, обратном к
   алфавитному, слова текста, содержащие не менее 4-х согласных, в
   остальных словах удалить гласные и продублировать согласные буквы.
 */
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Text.RegularExpressions;
 
 
namespace @string
{
    class Program
    {
        static void Main(string[] args)
        {
            const int kolsoglas = 4; // количество согласных
            string str, strsogla = "цкнгшщзхъфвпрлджчсмтьбЦКНГШЩЗХЪФВПРЛДЖЧСМТЬБ",
                        strglas = "уеыаоэяиюёЙУЕЫАОЭЯИЮЁ";
            ArrayList mas4soglas = new ArrayList(); // массив для слов текста,
                                                    // которые содержат не менее 4-х согласных
            ArrayList mas = new ArrayList(); // массив для остальных слов текста
 
            // вводим строку с клавиатуры
            Console.WriteLine("Введите строку русского текста");
            str = Console.ReadLine();
            // задаем разделитель данных - массив строк, содержащих разделители 
            string[] stringSeparators = new string[] {" ", ",", ".", ":","!","?"};
            // определяем и формируем массив слов
            string [] slova=str.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
            // печатаем массив слов
            for (int i = 0; i < slova.Length; i++)
                Console.WriteLine(slova[i]);
            // цик по словам
            for (int i = 0; i < slova.Length; i++)
            {
                // цикл по буквам слова
                int soglass=0; // количество глассных =0
                for (int j = 0; j < slova[i].Length; j++)
                    // цикл по глассным
                    for (int k = 0; k < strsogla.Length; k++)
                        if (strsogla[k] == slova[i][j])
                        {
                            soglass++;
                            if (soglass == kolsoglas) 
                                goto Lkolsoglas; // если количество согласных >= 4 выходим
                        }
                // удаляем гласные
                slova[i]=Regex.Replace(slova[i], @"[\u0000-\uffff-[^"+strglas+"]]", "");
                // дублируем согласные
                string ss="";
                for(int j=0;j<slova[i].Length;j++)
                {
                    ss+=slova[i][j];
                    if (strsogla.IndexOf(slova[i][j])!=-1)
                        ss += slova[i][j];
                }
                mas.Add(ss);
                continue;
                Lkolsoglas: mas4soglas.Add(slova[i]);
            }
            // печатаем слова в которых >=4 согласных сортированные
            Console.WriteLine("\nСлова в которых не менее 4-х согласных\n"); 
            mas4soglas.Sort(); // сортирум массив по алфавиту
            mas4soglas.Reverse(); // переписываем в обратном порядке
            for (int i = 0; i < mas4soglas.Count; i++)
                Console.WriteLine(mas4soglas[i]);
            // печатаем слова в которых убраны гласные и продублированы согласные
            Console.WriteLine("\nОстальные слова\n"); 
            for (int i = 0; i < mas.Count; i++)
                Console.WriteLine(mas[i]);
 
        }
    }
}
Тут после ввода строки все слова выводятся в отдельный столбик. Я просто не знаю как оператор, отвечающий за это, вставить в ту задачу.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.05.2010, 01:35
Помогаю со студенческими работами здесь

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

Удалить из строки все слова, которые являются палиндромами
Дана строка символов(текст). Составить программу, удаляющую из строки все слова, которые являются палиндромами. Палиндром - это слово,...

Запросить имя файла и распечатать только те строки, которые являются палиндромами
Подскажите что не так? Нужно написать программу, которая запрашивает имя файла и распечатывает только те строки, которые являются...

Сколько есть подстрок четной длины у строки S, которые являются палиндромами
помогите с данной задачкой... У Азизхана есть строка S. Его интересует сколько есть подстрок четной длины у строки S, которые являются...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru