0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 19

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

29.03.2012, 18:48. Показов 18430. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток) проблема такова: ввести предложение определить количество слов начинающихся на заданную букву; (и если это возможно в этом же коде второе условие) определить количество слов начинающихся с буквы заданной пользователем.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
3.  class String
4.  {
5.      static void Main()
6.      {
7.          int k = 0;
8.          Console.Write("Введите строку: ");
9.          string str = Console.ReadLine();
10.         if(str[0] == 'В')
11.             k++;
12.         for (int i = 1; i < str.Length; i++)
13.         {
14.             if (str[i] == 'В' && str[i - 1] == ' ')
15.                 k++;
16.         }
17.         Console.WriteLine("Количество слов начинающихся на В: " + k);
18.         Console.ReadKey();
19.     }
20. }
это первое условие, но по какой - то причине ответ мне выдает 0, а второе условие не могу сообразить как написать.
Заранее спасибо

Добавлено через 30 минут
помогите если не сложно срочно надо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2012, 18:48
Ответы с готовыми решениями:

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

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

Подсчитать количество слов, начинающихся и заканчивающихся на одну и ту же букву
Мне нужно написать эту программу используя методы классов char и array. Добавлено через 3 минуты Мои попытки : using System; ...

14
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
29.03.2012, 19:02
У меня получился вот такой (довольно объемный) код:
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
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static int count = 0;
        static char ch;
        static string str;
        static bool status;
 
        static void Main(string[] args)
        {
            Console.Write("Введите строку: ");
            str = Console.ReadLine().ToLower();
  charRead: Console.Write("Введите символ: ");
            
            try
            {
                ch = Convert.ToChar(Console.ReadLine().ToLower());
            }
            catch
            {
                Console.WriteLine("Вы ввели не символ!!!");
                Console.ReadKey();
                Console.Clear();
                goto charRead;
            }
 
            if (str[0] == ch)
                count++;
 
            foreach (char _char in str)
            {
                if (status)
                {
                    if (_char == ch)
                        count++;
                }
                if (_char == ' ')
                    status = true;
            }
 
            Console.WriteLine("Количество слов начинающихся на \"{0}\": {1}", ch, count);
            Console.ReadKey();
        }
    }
}
Программа не различает заглавных и строчных букв, все сводит к строчным. Если нужно - пиши, прокоментирую код!

P.S. Добавил проверку корректного ввода символа, использовал GOTO!
1
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
29.03.2012, 19:02
C#
1
2
3
var input = "Some text here.. tooo";
            var letter = "t";
            var n = input.Split(new[] { ' ', '\t', ',', '.' }).Count(w => w.StartsWith(letter));
1
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 19
29.03.2012, 20:43  [ТС]
Спасибо, можно подписать комментарии к строчка, а я там сам разберусь
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
29.03.2012, 20:56
Цитата Сообщение от SandWraith Посмотреть сообщение
C#
1
2
3
var input = "Some text here.. tooo";
            var letter = "t";
            var n = input.Split(new[] { ' ', '\t', ',', '.' }).Count(w => w.StartsWith(letter));
Спасибо, можно подписать комментарии к строчка, а я там сам разберусь
тут всё просто
Входную строку режем в массив строк по символам ' ', '\t', ',', '.' после чего Используем Лямбда выражение Count - количество
w => w.StartsWith(letter) Проверяет совподает ли начальная буква строки с letter и если а то true
В итоге пробегая по массиву Лямбда выр-е считает колличество
1
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 19
29.03.2012, 21:03  [ТС]
Kill100, я говорил про большой (код который выше)
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
29.03.2012, 21:12
фактически то же самое
Правда реализация не лучшая
Лучше будет так
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
        /// <summary>
        /// Считаем количество слов на заданную букву
        /// </summary>
        /// <param name="InputString">Входная строка в которой необходимо посчитать количество слов</param>
        /// <param name="Simvol">Начальная буква или несколько букв в слове</param>
        /// <returns>Количество слов</returns>
        static public Int32 CountSring(String InputString, String Simvol)
        {
            Int32 Count = 0;
            String[] StringMass = InputString.Split(' ');//Массив слов строки
            foreach (var Slovo in StringMass)//Бежим по массиву
                if (Slovo.StartsWith(Simvol))//Проверяем вхождение букв с начало слова
                    Count++;//если входит то +1
            return Count;//Возвращаем результат
        }
        static void Main(string[] args)
        {
 
            Console.Write("Введите строку: ");
            String str = Console.ReadLine().ToLower();
            Console.Write("Введите символ: ");
            String char1 = Console.ReadLine().ToLower();
            Console.Write(CountSring(str, char1));//Вызываем функцию
            Console.ReadKey();
        }
2
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 19
29.03.2012, 21:18  [ТС]
Kill100, то есть в 19 строчках получилось 2 условия я не могу разобраться где слово начинается на заданную букву а где слово начинающееся с буквы заданную пользователем) может не пойму из - за того что мозг закипает))))))
0
 Аватар для Kill100
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
29.03.2012, 21:34
C#
1
  Int32 Count = 0;
// Это количество слов
C#
1
String[] StringMass = InputString.Split(' ');
//Массив слов строки то есть если была входная строка InputString = "Я пошёл учить C#" то в результате метода Split(' ') у нас получится массив StringMass содержащий в себе следующие строки
[0] = "Я"
[1] = "пошёл"
[3] = "учить"
[4] = "C#"
Далее
C#
1
foreach (var Slovo in StringMass)//Бежим по массиву причем I элемент массива ложится в Slovo
то есть аналагично
C#
1
2
3
for(int i =0; i<StringMass.Lenght; i++)
{StringMass[i].....ИТД
}
далее
C#
1
if (Slovo.StartsWith(Simvol))
здесь метод StartsWith Определяет, совпадает ли начало этого экземпляра строки с заданной строкой. И если да то возвращает true следовательно в этом случае произойдет
C#
1
Count++; //аналогично Count+=1 или Count = Count+1

Не по теме:

то есть в 19 строчках получилось 2 условия
если это много наверху есть и с 3 строчками :)

2
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
29.03.2012, 21:35
Цитата Сообщение от yaz Посмотреть сообщение
начинается на заданную букву а где слово начинающееся с буквы заданную пользователем
Кто на ком стоял?
0
107 / 107 / 9
Регистрация: 19.12.2010
Сообщений: 417
30.03.2012, 01:37
А я бы сделал регулярными выражениями. Получается гибче и понятнее, а во многих случаях и короче.
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
using System;
using System.Text.RegularExpressions;
namespace Abcd
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Введите строку: ");
            var str = Console.ReadLine();
 
            Console.Write("Введите букву (или несколько букв), с которой должно начинаться слово: ");
            var startWith = Console.ReadLine();
 
            startWith = Regex.Escape(startWith); //Заменяем спецсимволы (на всякий случай).
 
            var ms = Regex.Matches(str, String.Format(@"(\W|^)(?<word>{0}\w*?)(\W|$)", startWith), RegexOptions.IgnoreCase); //Не буква или начало строки, затем введённая буква, затем несколько букв и не буква либо конец строки.
            Console.WriteLine("Найдено {0} слов:", ms.Count);
            foreach (Match m in ms) //Перебираем найденные результаты.
            {
                Console.WriteLine("    {0}, индекс символа в строке: {1}", m.Groups["word"].Value, m.Index); //Выводим найденное слово
            }
 
            Console.Write("Нажмите [Enter] для выхода...");
            Console.ReadLine();
        }
    }
}
Пример работы:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Введите строку:
Это строка. Сейчас мы найдём все слова, начинающие с букв "сло" вне зависимости
от регистра. Сло, сло, СЛО, слОво, слон, неСЛОн, сломан, неСЛОман.
Введите букву (или несколько букв), с которой должно начинаться слово: сло
Найдено 8 слов:
    слова, индекс символа в строке: 32
    сло, индекс символа в строке: 58
    Сло, индекс символа в строке: 92
    сло, индекс символа в строке: 97
    СЛО, индекс символа в строке: 102
    слОво, индекс символа в строке: 107
    слон, индекс символа в строке: 114
    сломан, индекс символа в строке: 128
Нажмите [Enter] для выхода...
Про регулярные выражения: Регулярные выражения в .NET Framework.
1
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
30.03.2012, 09:34
Как насчет regexp-ов?
C#
1
2
3
4
string str = "Привет мир, привет Вася, привет форум";
char c = 'п';
Regex regexp = new Regex(@"\b" + c, RegexOptions.IgnoreCase);
Console.WriteLine(regexp.Matches(str).Count);
0
30.03.2012, 12:21

Не по теме:

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

0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
30.03.2012, 13:41
Цитата Сообщение от FutureCome Посмотреть сообщение

Не по теме:

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

Я случайно не увидел ваш пост вовремя, однако я не считаю что мой пример хуже, по нескольким причинам:
1. мой варинт соответствует заданию ТС
2. ваше регулярное выражение сложно для чтения. Складывается впечатление что вы не знали/забыли о \b
0
1 / 1 / 0
Регистрация: 29.05.2014
Сообщений: 175
04.06.2014, 23:02
0 выдавало потому что ты вписывал русскую В, а при вводе указывал английскую В)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2014, 23:02
Помогаю со студенческими работами здесь

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

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

Регулярное выражение: посчитать количество слов начинающихся и заканчивающихся на одну букву
Вот код, но он работает некорректно, когда ввожу asdfga выводит 1, но когда через пробел ввожу следующие слово то уже 0 ...

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

Определить количество слов, начинающихся на заданную букву в строке
Задача: определить, количество слов начинающихся на заданную букву в сроке мое решение: Var st:string; s:char; ...


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

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

Новые блоги и статьи
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru