Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Aigera2012
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 3
1

Найти и вывести слово, содержащее наибольшее количество букв

02.01.2012, 19:43. Просмотров 2173. Ответов 17
Метки нет (Все метки)

Элементами слов могут быть любые символы. Найти и вывести слово, содержащее наибольшее количество букв..
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2012, 19:43
Ответы с готовыми решениями:

вывести слово, содержащее наибольшее количество гласных букв(Русских)
Ввести строку, вывести слово, содержащее наибольшее количество гласных букв..... Если можно то...

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

Вывести слово, содержащее наибольшее количество цифр
1)В заданном текстовом файле элементами слов могут быть как буквы, так и цифры. Вывести слово,...

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

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

17
kolorotur
Эксперт .NET
11886 / 9442 / 2412
Регистрация: 17.09.2011
Сообщений: 16,150
Завершенные тесты: 1
02.01.2012, 19:52 2
Лучший ответ Сообщение было отмечено как решение

Решение

Если элементами слова могут быть любые символы, то длина самого длинного слова равна количеству символов в строке.
3
Высокий
245 / 245 / 135
Регистрация: 09.04.2011
Сообщений: 524
02.01.2012, 22:27 3
Примерный алгоритм:
1. (если знаки препинания не считаются частью слова) чистите строку от всего кроме букв\цифр\пробелов. (регулярные выражения)
2. Разбиваете строку на массив слов, используя пробел как разделитель.
3. Находите самое длинное слово простым перебором элементов массива.
1
iliabest
16 / 16 / 3
Регистрация: 16.08.2011
Сообщений: 62
02.01.2012, 22:58 4
Вот братюня

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
using System;
 
namespace LongestWord
{
    class Program
    {
        static void Main()
        {
        Begin:
            Console.WriteLine("Введите предложение");
            var sentence = Console.ReadLine();
 
            if (sentence != null)
            {
                var words = sentence.Split(' ');
 
                var max = "";
                var position = 0;
                for (int i = 0; i < words.Length; i++)
                {
                    var word = words[i];
                    if (word.Length > max.Length)
                    {
                        max = word;
                        position = i + 1;
                    }
                }
                Console.WriteLine();
                Console.WriteLine("Самое длинное слово в предложение это: {0}" + Environment.NewLine +
                                  "Позиция слова в предложение: {1}" + Environment.NewLine +
                                  "Спасибо за использование программы", max, position);
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine("Вы ничего не ввели!");
                goto Begin;
            }
 
 
        }
    }
}
1
02.01.2012, 22:58
kolorotur
Эксперт .NET
11886 / 9442 / 2412
Регистрация: 17.09.2011
Сообщений: 16,150
Завершенные тесты: 1
02.01.2012, 23:55 5
Цитата Сообщение от iliabest Посмотреть сообщение
var max = "";
max = word;
А зачем хранить ссылку на найденное слово, если уже сохраняется его индекс в массиве?
Почему потом в консоль нельзя просто вывести words[position]?
0
irineyxxx
140 / 52 / 11
Регистрация: 18.09.2011
Сообщений: 730
03.01.2012, 00:04 6
iliabest, Чрезмерное использование оператора - var, ведет к плохому программированию. В вашем коде, он использован большое количество раз.
0
kolorotur
03.01.2012, 00:41
  #7

Не по теме:

Цитата Сообщение от irineyxxx Посмотреть сообщение
Чрезмерное использование оператора - var, ведет к плохому программированию.
Поясните, если не сложно, что означает "плохое программирование".

1
irineyxxx
140 / 52 / 11
Регистрация: 18.09.2011
Сообщений: 730
03.01.2012, 00:57 8
kolorotur, Ну я где-то в книжке такое вычитал, что так нельзя.
0
Vitall
758 / 538 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
03.01.2012, 01:40 9
irineyxxx а что goto не заметил?тоже плохое программирование !
C#
1
goto Begin;
0
znake
03.01.2012, 02:08
  #10

Не по теме:

Цитата Сообщение от irineyxxx Посмотреть сообщение
kolorotur, Ну я где-то в книжке такое вычитал, что так нельзя.
про анонимные типы в той книжке умолчали? :)
а вообще..var лишь может усложнить легкость чтения кода, но и то, имхо, лишь в тех случаях, когда читаешь исходники с листа. с тем же интеллисенсом легкость чтения нисколько не теряется, а наоборот, на мой взгляд, только удобнее становится...
по сути, не считая анонимных типов, var - это такой же синтаксический сахар, как и nullable, например... и юзать его или нет - каждый решает сам...

1
kolorotur
03.01.2012, 02:10
  #11

Не по теме:

Цитата Сообщение от Vitall Посмотреть сообщение
а что goto не заметил?тоже плохое программирование !
Чем же он так плох? :)

Цитата Сообщение от znake Посмотреть сообщение
не считая анонимных типов, var - это такой же синтаксический сахар, как и nullable, например... и юзать его или нет - каждый решает сам...
Разрешите согласиться.

0
Vitall
03.01.2012, 02:36
  #12

Не по теме:

Цитата Сообщение от kolorotur Посмотреть сообщение
Чем же он так плох?
Оператор GOTO в языках высокого уровня является объектом критики, поскольку чрезмерное его применение приводит к созданию нечитаемого «спагетти-кода» )))
Статья полностью в википедии http://ru.wikipedia.org/wiki/GOTO:read:

0
Mr.Santiaga
4 / 4 / 2
Регистрация: 03.11.2010
Сообщений: 72
03.01.2012, 02:39 13
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        static void Main(string[] args)
        {
            int wordLen = 0;
            string desired_word = string.Empty;
            char[] chars = { ' ' }; //сюда засовываешь элементы, которыми могут разделятся слова. Например {' ', '!', '-'}
            string data = Console.ReadLine();
            string[] words = data.Split(chars);
            foreach (string word in words)
            {
                if (word.Length > wordLen)
                {
                    wordLen = word.Length;
                    desired_word = word;
                }
            }
            Console.WriteLine("Слово максимальной длины - {0}, длина - {1}", desired_word, wordLen);
            Console.ReadKey();
        }
0
Aigera2012
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 3
03.01.2012, 11:26  [ТС] 14
задача на множество..
0
iliabest
16 / 16 / 3
Регистрация: 16.08.2011
Сообщений: 62
03.01.2012, 23:00 15
Хехех, понятно. спасибо за совет kolorotur и вправду можно было сократить на одну переменную)..

По поводу goto это по сути не принципиально поскольку прога небольшая но исходник я исправил..

И последнее замечание это про var.. Если честно, плохим программированием я бы это не назвал.. Поскольку неявный тип лишь говорит компилятору найти наиболее подходящий тип для переменной из выражения стоящего справа... Таким образом компилятор применит unit где нужно а где нужно поставит decimal. Разве это не упрощает жизнь?) Ведь о типе переменной можно судить и по ссылки на созданный объект в ней..

Замечания предельно хорошие, спасибо..

Вот, что я исправил

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
using System;
 
namespace LongestWordRepair
{
    class Program
    {
        static void Main()
        {
            Console.Write("Введите предложение");
            var sentence = Console.ReadLine();
 
            if (!string.IsNullOrEmpty(sentence))
            {
                var words = sentence.Split(' ');
 
                var position = 0;
                for (var i = 0; i < words.Length; i++)
                {
                    var word = words[i];
                    if (word.Length > words[position].Length)
                    {
                        position = i;
                    }
                }
                Console.WriteLine();
                Console.WriteLine("Самое длинное слово в предложение это: {0} \n" +
                                  "Позиция слова в предложение: {1} \n" +
                                  "Спасибо за использование программы", words[position], position + 1);
                Console.ReadLine();
            }
            else
            {
                Console.WriteLine("Вы ничего не ввели!");
                Console.WriteLine();
                Main();
            }
        }
    }
}
0
KarmaMaker
91 / 90 / 11
Регистрация: 09.12.2011
Сообщений: 233
03.01.2012, 23:24 16
C#
1
35: Main();
Зачем применять рекурсию там, где она не нужна? Замена одного антипаттерна другим - это не есть хорошо...
0
iliabest
16 / 16 / 3
Регистрация: 16.08.2011
Сообщений: 62
04.01.2012, 00:51 17
Ну я сделал с goto оказалось плохо и рекурсия тоже... Прошу - ваш наиболее лучший вариант?
0
KarmaMaker
91 / 90 / 11
Регистрация: 09.12.2011
Сообщений: 233
04.01.2012, 01:03 18
Например так:

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
using System;
 
namespace justForFun
{
    class MainClass
    {
        public static void Main()
        {
            Console.Write("Введите предложение");
 
            string sentence;
            while ((sentence = Console.ReadLine()) == "" )
            {
                Console.WriteLine("Вы ничего не ввели!");
                Console.WriteLine();
            }
 
            var words = sentence.Split(' ');
 
            var position = 0;
            for (var i = 0; i < words.Length; i++)
            {
                var word = words[i];
                if (word.Length > words[position].Length)
                {
                    position = i;
                }
            }
            Console.WriteLine();
            Console.WriteLine("Самое длинное слово в предложение это: {0} \n" +
                              "Позиция слова в предложение: {1} \n" +
                              "Спасибо за использование программы", words[position], position + 1);
            Console.ReadLine();
        }
    }
}
0
04.01.2012, 01:03
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2012, 01:03

Ввести слово, если количество букв этого слово больше 15, то разделить это количество на сумму цифр
Ввести слово, если количество букв этого слово больше 15, то разделить это количество на сумму цифр.

Вывести слово минимальное по величине столько раз, сколько букв в первом слове, если это слово более чем из
Вывести слово минимальное по величине столько раз, сколько букв в первом слове, если это слово...

Выяснить, верно ли, что среди слов строки имеется слово, содержащее все буквы, входящие в слово «сад»
Выяснить, верно ли, что среди слов строки имеется слово, содержащее все буквы, входящие в слово...


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

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

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