0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 21
|
|
1 | |
Вывести слова которые повторяются и количество их повторения28.01.2012, 22:46. Показов 9035. Ответов 38
Метки нет (Все метки)
Ребят помогите реализовать следующую програмку: нужно чтоб когда на входе программы было например "мама мыла раму раму мыла мама".
программа вывела: слова которые повторяются и количество их повторения. мама - 2раза раму - 2раза мыла - 2 раза помогите
0
|
28.01.2012, 22:46 | |
Ответы с готовыми решениями:
38
Найти количество чисел , которые повторяются в массиве, а также сколько именно раз они повторяются Найти и вывести на экран все элементы, которые которые повторяются более N/2 раз Удалить из сообщения слова (без учета регистра), которые повторяются. Получить количество элементов массива, которые не повторяются |
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
03.02.2012, 18:18 | 22 |
Код
C:\c_cpp\shitcode>cl yura_get_words.c Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.42 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. yura_get_words.c yura_get_words.c(27) : error C2143: syntax error : missing ';' before 'type' yura_get_words.c(28) : error C2065: 'i' : undeclared identifier Код
Microsoft (R) Incremental Linker Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. /out:yura_get_words.exe yura_get_words.obj C:\c_cpp\shitcode>yura_get_words.exe Enter text(less than 1024 chars) bla one bla two bla three two one Number of words in string 8 bla chislo raz v stroke 3 one chislo raz v stroke 2 two chislo raz v stroke 2 three chislo raz v stroke 1 Enter text(less than 1024 chars) Number of words in string 8 bla chislo raz v stroke 3 one chislo raz v stroke 2 two chislo raz v stroke 2 three chislo raz v stroke 1 Enter text(less than 1024 chars)
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
03.02.2012, 22:45 | 24 |
-=ЮрА=-, попробуй всё то же самое, только вместо ввода строки "this is second text" просто ввод нажми.
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
03.02.2012, 23:42 | 26 |
Ну например должно выводиться сообщение, что слов не найдено, или, как я обычно делаю, пустая строка - выход... Но уж точно не предыдущий вывод повторять. Странная какая-то особенность реализации.
0
|
|
04.02.2012, 00:06
#27
|
Не по теме: - easybudda, я опять удивлён - хорошо в начале цикла здесь пиши text[0] = '\0'; и будет счастье от лицезрения пустого ввода(можно ещё if ввести, чтобы сообщение выводил при пустом вводе - к алгоритму выделения слов это ну никакого отношения не имеет...) Думаю наша дискусия в рамках данного топика интересна лишь нам двоим, верней мне уже не интересна. Я хотел привести алгоритм отличный от всех приведенных, я привёл большего мне ничего не надо...
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
04.02.2012, 01:01 | 28 |
Ну подумаешь, память лишняя обнуляется, ну ничего, что на ввод пустой строки программа старые данные выдаёт. Сам алгоритм тоже прекрасен, да и реализован отлично
Код
Enter text(less than 1024 chars) aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Segmentation fault А пишу я это всё к тому, что велосипеды всегда (ну или за очень редким исключением) на несколько порядков кривее стандартных функций. И очень важно научиться пользоваться ими, а не городить не бог весть что, чтобы потом не удивляться Другое дело - попытки написать собственную реализацию стандартных функций, что в общем дело полезное. Пока пишешь, становится понятнее, почему они в стандартной библиотеке текие, какие есть. Но в любом случае очень важно проверять результаты своих стараний, иначе толка от них мало будет...
0
|
Заблокирован
|
|
24.03.2012, 10:38 | 29 |
- go, посмотри с какими проблемами сталкиваются люди и почему strtok иногда не применим...
Тип дескриптора на проекцию файла.
0
|
|
24.03.2012, 12:06
#31
|
0
|
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
24.03.2012, 14:57 | 33 |
go, strtok действительно не рекомендуется использовать, и именно по причине того, что она портит исходную строку.
0
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
24.03.2012, 15:26 | 35 |
Спорить не буду, может кто-то где-то и не рекомендует её использовать, но я бы не заметил такую нерекомендацию. Если так важно сохранять изначальную строку, лучше сделать обёртку, внутри которой в strtok будет передаваться копия строки, нежели мудрить непонятные алгоритмы с незатейливой реализацией.
0
|
Заблокирован
|
|
24.03.2012, 16:01 | 36 |
easybudda, давай тогда завершим нашу дискусию по поводу strtok - сфера применения strtok простенькие програмки не требующие особых навыков работы. В общем случае строка может быть слишком большой чтобы делать для неё 2-й буфер. Да можно реализовать достаточно простой алгоритм для c strtok и 2-м буфером(увеличив ресурсозатратность нашей програмки ровно в 2 раза), либо всё же сесть и раз и на всегда написать аналог strtok и не мудрить с памятью.
Суть strtok в следующем - она забивает строку нулями кроме отличных от разделителй символов, а потом последовательно выдаёт нам то что между ноликами в виде очередной дозы токенов. Логика scanf в выборке токенов подходящего формата - оба алгоритма заслуживают на жизнь и гнуть палку в сторону strtok не следует. Лично да часто использую strtok - да она проста и давать ответы с ней на форуме легко, но иногда можно встретиться с ограничениями когда и ввести 2-й то буфер нельзя. Что если у тебя есть дескриптор отображённого в память файла, что если туда отображено 100 Мб и в этих 100 Мб нужно выловить какой либо строковый-ключ, причём критически важно чтобы оперативку больше уже ничего не писали. Задачи разные бывают для одних strtok - то самое оно, а для других Г на постном масле. Своим алгоритмом по принципу scanf свободно мог бы почитывать отражённый файл извлекая из него нужное (читал бы посредством ReadFile а то ещё и к этому придерёшся)
1
|
Модератор
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
|
|
24.03.2012, 17:38 | 37 |
-=ЮрА=-, много раз уже говорил и ещё раз повторю - велосипеды делать иногда приходится, но нужна достаточно веская причина, чтобы просто задуматься об отказе от стандартных средств, не то, чтобы на самом деле от них отказаться. Текстовая строка длинной в 2+ гигабайта, полностью отображённая в память - сама по себе повод задуматься. В случае строк вменяемой длины (умещающихся в установленный в системе размер буфера) мне бы и в голову не пришло морочиться изобретением велосипедов (будь то учебная програмка в десяток строк или рабочая программа общей длинной в 10К строк). К тому же реализация более, чем сомнительна (28 пост в этой теме). Короче, думаю, не нужно искать проблему там, где её нет. Если на то пошло - можно насочинять уйму задач, для которых мощности персонального компьютера в принципе не хватит. Но это не повод продавать квартиру и переезжать в комнату в коммуналке, став при этом счастливым обладателем небольшого шкафчика напиханного примерно такими железяками и способного за считанные минуты раскодировать инопланетные послания длиной в петабайт символов каждое...
1
|
|
24.03.2012, 18:37
#38
|
0
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
24.03.2012, 18:49 | 39 |
Сообщение было отмечено как решение
Решение
0
|
24.03.2012, 18:49 | |
24.03.2012, 18:49 | |
Помогаю со студенческими работами здесь
39
Вывести буквы текста которые меньше всего повторяются Найти и вывести на экран слова, которие повторяются Вывести элементы массива, которые повторяются ровно два раза Пользователь вводит 8 чисел, вывести числа которые повторяются 2 или больше раз Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |