Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 14:46   #1
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
По умолчанию Реализовать через stringbuilder

Тема:"Строки"
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить длину самого короткого (длинного) слова.
Программа приведенная ниже сделана через string и char, мне нужно сделать через stringbuilder.Помогите пожалуйста.

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication34
{
    class Program
    {
        static void Main(string[] args)
        {
            int d = 0, i;
            int r;
            Console.WriteLine("");
            Console.WriteLine("Введите любую строку символов(слов) через пробел: ");
            string s = Console.ReadLine();
            s = s + ' ';
            Console.WriteLine("Выбирите вариант решения: ");
            Console.WriteLine();
            Console.WriteLine("");
            Console.WriteLine("1: Определить длину самого короткого слова ");
            Console.WriteLine("2: Определить длину самого длинного слова");
            Console.WriteLine();
            Console.WriteLine("");
            r = Convert.ToInt32(Console.ReadLine());
 
            switch (r)
            {
                case 2:
                    Console.WriteLine("");
                    Console.WriteLine("Вы выбрали вариант определения длинны самого длинного слова! ");
                    Console.WriteLine();
                    Console.WriteLine("");
                    int max = 0;
                    char[] h = s.ToCharArray();
                    for (i = 0; i < h.Length; i++)
                    {
                        d++;
                        if (h[i] == ' ')
                        {
                            if (d > max)
                            {
                                max = d - 1;
                                d = 0;
                            }
                            else d = 0;
                        }
                    }
                    Console.Write("Максимальная длинна слова: " + max);
                    Console.WriteLine();
                    Console.WriteLine("");
                    Console.WriteLine("Для завершения нажмите любую клавишу...");
                    Console.ReadKey();
                    break;
 
                case 1:
                    Console.WriteLine("");
                    Console.WriteLine("Вы выбрали вариант определения длинны самого короткого слова! ");
                    Console.WriteLine();
                    Console.WriteLine("");
                    char[] e = s.ToCharArray();
                    int min = e.Length;
                    for (i = 0; i < e.Length; i++)
                    {
                        d++;
                        if (e[i] == ' ')
                        {
                            if (d < min)
                            {
                                min = d - 1;
                                d = 0;
                            }
                            else d = 0;
                        }
                    }
                    Console.Write("Минимальная длинна слова: " + min);
                    Console.WriteLine();
                    Console.WriteLine("");
                    Console.WriteLine("Для завершения нажмите любую клавишу...");
                    Console.ReadKey();
                    break;
            }
        }
    }
}
bufalo вне форума Ответить с цитированием
Старый 09.12.2011, 17:23   #2
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
По умолчанию

можно предложить свой вариант, помогите пожалуйста.
bufalo вне форума Ответить с цитированием
Старый 09.12.2011, 18:38   #3
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

По хорошему тут все равно надо через string делать. У String есть метод Split, который разбивает слово на массив слов разделенных по аргументу, который ты подаешь в Split. Т.е.

Код:
string text = "Hello World";
string[] result = text.Split(" "); // в result будет 2 слова Hello и World
Можешь совместить:
Код:
StringBuilder sb = new StringBuilder("Hello World");
string[] result = sb.ToString().Split(" ");
Ну и остается дело за малым - найти нужное тебе слово.
Hollander вне форума Ответить с цитированием
Старый 09.12.2011, 19:37   #4
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
По умолчанию

а можеш показать на этой программе, как это будет выглядеть, а то у меня что то не получается

Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            String text = "прекрасная королева Изольда";
            var splited_text = text.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
            var min = splited_text.Min(word => word.Length);
            var max = splited_text.Max(word => word.Length);
            Console.WriteLine("Длина самого короткого слова : {0}\nДлина самого длинного слова : {1}", min, max);
            Console.Read();
        }
    }
}
bufalo вне форума Ответить с цитированием
Старый 09.12.2011, 19:44   #5
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Код:
StringBuilder stringBuilder = new StringBuilder("прекрасная королева Изольда");
var splited_text = stringBuilder.ToString().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var min = splited_text.Min(word => word.Length);
var max = splited_text.Max(word => word.Length);
Console.WriteLine("Длина самого короткого слова : {0}\nДлина самого длинного слова : {1}", min, max);
Console.Read();
Hollander вне форума Ответить с цитированием
Старый 09.12.2011, 19:48   #6
bufalo
Пользователь
 
Регистрация: 19.09.2011
Сообщений: 32
По умолчанию

большое спасибо за помощь!
bufalo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как реализовать соединение мобилы с компом через Bluetooth. Мастак Общие вопросы по Java, Java SE, Kotlin 0 30.10.2011 23:05
Реализовать Tthread через interface cosmic_call Общие вопросы Delphi 4 20.02.2011 22:36
Заполнение через список выбора одного диапазона таблиц через другой P10neer Microsoft Office Excel 5 23.12.2010 23:44
Как реализовать "ретранслятор" запросов через сокеты? Kanaris Работа с сетью в Delphi 3 04.12.2009 16:58
Связь с кучей dbf файлов (таблиц) через OLEDB через UNION ALL Sasha811 SQL, базы данных 0 01.01.2009 14:04