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

Вывести вертикальную гистограмму длин слов введенного текста

27.04.2018, 12:36. Показов 3662. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, дали задачу "вывести вертикальную гистограмму длин слов введенного текста". не особо понимаю как это реализовать . Нужен цикл, который на каждой итерации у каждого слова проверяет наличие ненулевого элемента и делает штрих в строке если он есть? Но как реализовать, чтобы за одну итерацию цикл мог сразу все слова из текста проверить ?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.04.2018, 12:36
Ответы с готовыми решениями:

Вывести частотный словарь введенного текста
Помогите,Плиз. срочно нужно Пользователь вводит n предложений на латинице. Вывести частотный словарь введенного текста....

Вывести вертикальную гистограмму длин слов введенного текста
Вывести вертикальную гистограмму длин слов введенного текста

Для заданного текста построить гистограмму распределения длин слов.
Для заданного текста построить гистограмму распределения длин слов. Помогите пожалуйста.В С++

15
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
27.04.2018, 15:45
Johannex,

1. Преобразуем текст в массив слов
C#
1
String.Split(new string[] { " " });
2. Создаём массив значений для гистограммы, длиной равной разнице максимальной и минимальной длины слова
3. В цикле от минимальной длины
C#
1
String[].Min(x => x.Length)
до максимальной длины
C#
1
String[].Max(x => x.Length)
ищем количество слов соответствующей длины
C#
1
String[].Where(x => x.Length == переменная цикла, обозначающая искомую длину слова).Count()
Если количество ненулевое, сохраняем в массив значений для гистограммы поl индексом, равным (переменная цикла, обозначающая искомую длину слова минус минимальная длина слова)
4. Рисуем гистограмму
0
0 / 0 / 0
Регистрация: 24.11.2017
Сообщений: 25
27.04.2018, 16:05  [ТС]
в 1 коде жалуется, невозможно преобразовать string[] в char. Может я неправильно делаю ?
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
27.04.2018, 16:33
Johannex,

C#
1
.Split(new char[] { ' ' })
0
0 / 0 / 0
Регистрация: 24.11.2017
Сообщений: 25
27.04.2018, 16:36  [ТС]
Вот создал string s = Console.ReadLine();
Теперь s.Split(new string[] { " " });
Так работает. Теперь запутался с массивом немного.
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
27.04.2018, 16:42
Johannex, ок, хорошо.

метод Split возвращает массив строк, разделённых разделителями (мы выбрали в качестве разделителя пробел).
Объявляем переменную string[] words и присваиваем ему массив, возвращаемый методом Split.
0
0 / 0 / 0
Регистрация: 24.11.2017
Сообщений: 25
27.04.2018, 16:49  [ТС]
string[] words = s.Split(new char[] { ' ' });
Так правильно, или нет?
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
27.04.2018, 17:02
Johannex,
в качестве разделителя могут использоваться как символы
C#
1
new char[] { ' ' }
так и строки
C#
1
new string[] { "строка-разделитель" }
посмотрите перегрузки метода Split
0
0 / 0 / 0
Регистрация: 24.11.2017
Сообщений: 25
27.04.2018, 17:12  [ТС]
Всего 5 перегрузок сказано, но для задачи нужна же 1 ?
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
27.04.2018, 17:19
Johannex,
да, вот так для этой задачи годится
C#
1
.Split(new char[] { ' ' })
0
0 / 0 / 0
Регистрация: 24.11.2017
Сообщений: 25
27.04.2018, 17:36  [ТС]
Так и сделал. Присвоил это массиву, вот только как максимального значения длины слова вычесть минимальное? И для каждого слова нужно это?
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
28.04.2018, 10:21
Johannex, прежде чем начинать писать код, нужно понять как задача решается с математической точки зрения. Вы уже решили её математически?

Вот текст для примера:
В замкнутой системе тел полная энергия не изменяется при любых взаимодействиях внутри этой системы тел
Как будете решать задачу?
0
0 / 0 / 0
Регистрация: 24.11.2017
Сообщений: 25
29.04.2018, 16:33  [ТС]
Именно, даже с математической не понимаю как решить. Гистограммы в C# никогда не видел
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
29.04.2018, 21:52
Johannex, гистограмму в консоли звёздочками нарисовать можно, это не проблема.
Для гистограммы нужен диапазон интервалов (по оси Х) и диапазон значений (по оси У).
Для данной задачи интервалами будет длина слова, а значениями количество слов определённой длины в тексте.
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
29.04.2018, 22:37
Лучший ответ Сообщение было отмечено Johannex как решение

Решение

Johannex,

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
class Program
    {
        static void Main(string[] args)
        {
            // текст для анализа:
            string text = "В замкнутой системе тел полная энергия не изменяется при любых взаимодействиях внутри этой системы тел";
 
            // массив слов:
            string[] words = text.Split(' ');
 
            int[] buffer = new int[255]; // буферный массив
            int longest = 0; // максимальная длина слова
            int maxCount = 0; // самая часто встречаемая длина слова
            foreach(string word in words)
            {
                if (word.Length > longest) longest = word.Length; // ищем максимальную длину слова
                buffer[word.Length - 1]++; // увеличиваем количество слов длины, соотвествующей длине текущего слова 
                if (buffer[word.Length - 1] > maxCount) maxCount = buffer[word.Length - 1]; // ищем самую часто встречаемую длину слова
            }
 
            // массив значений для гистограммы
            int[] values = new int[longest];
 
            Array.Copy(buffer, 0, values, 0, longest); // копируем значения из буфера в массив значений, отсекая всё лишнее и незначимое
 
            // печатаем справку:
            Console.WriteLine(String.Format("Текст для анализа: {0}", text));
            Console.WriteLine(String.Format("Количество слов: {0}", words.Length));
            Console.WriteLine(String.Format("Максимальная длина слова: {0}", longest));
            Console.WriteLine();
 
            // рисуем гистограмму:
            string row = "";
            for (int count = maxCount, i = values.Length - 1; count > 0; count--, i--)
            {
                row = count.ToString();
                foreach (int value in values)
                {
                    if (value - count >= 0) row += " *  ";
                    else row += "    ";
                }
                Console.WriteLine();
                Console.WriteLine(row);
                
                if (count == 1)
                {
                    row = "";
                    for (int index = 1; index <= longest; index++)
                    {
                        row += index > 9 ? " " + index + " " : "  " + index + " ";
                    }
                    Console.WriteLine(row);
                }
            }
 
 
            Console.ReadLine();
        }
1
0 / 0 / 0
Регистрация: 24.11.2017
Сообщений: 25
30.04.2018, 20:06  [ТС]
Спасибо большое вам за помощь, теперь все понятно стало. Код попробую доделать, чтобы длину каждого слова вывел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.04.2018, 20:06
Помогаю со студенческими работами здесь

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

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

Получить гистограмму (столбчатую диаграмму) длин всех слов файла
Добрый день,помогите пожалуйста доработать программу. Нужно получить гистограмму (столбчатую диаграмму) длин всех слов файла #include...

Дан символьный файл f. Получить гистограмму длин всех слов файла f
Привет! Пожалуйста, помогите решить. Дан символьный файл f. Считая, что количество символов в слове не превосходит двадцати: ...

Вывести два соседних слова, сумма длин которых меньше суммы длин любых других пар соседних слов.
Необходимо вывести два соседних слова, сумма длин которых меньше суммы длин любых других пар соседних слов. Пример: Ввод: aaa a aa...


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

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

Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru