Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
6blgJlo'KOgeP
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 21
1

Вывести слова которые повторяются и количество их повторения

28.01.2012, 22:46. Просмотров 3877. Ответов 38
Метки нет (Все метки)

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


программа вывела: слова которые повторяются и количество их повторения.

мама - 2раза
раму - 2раза
мыла - 2 раза


помогите
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2012, 22:46
Ответы с готовыми решениями:

Найти и вывести на экран все элементы, которые которые повторяются более N/2 раз
#include "stdafx.h" #include <iostream> #include <fstream> using namespace...

Удалить из сообщения слова (без учета регистра), которые повторяются.
Удалить из сообщения слова (без учета регистра), которые повторяются.

Получить количество элементов массива, которые не повторяются
Задан массив А(n),некоторые элементы в нем могут встречаться несколько...

Вывести буквы текста которые меньше всего повторяются
надо вывести буквы из текста которые меньше всего повторяются на с++

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

38
-=ЮрА=-
Заблокирован
Автор FAQ
03.02.2012, 17:59 21
Цитата Сообщение от easybudda Посмотреть сообщение
кроме while ( 1 ) ничего не правил. Запустил программу, в ответ на приглашение ввёл строку, выдало результат и снова приглашение. Просто нажал enter, выдало предыдущий результат и приглашение...
- ну это я не от руки писал

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Ниже отработка для 2-го ввода
2 теста
, как вариант поставь, что нибудь другое кроме MinGW...
0
easybudda
Модератор
Эксперт CЭксперт С++
10092 / 6002 / 1504
Регистрация: 25.07.2009
Сообщений: 11,382
03.02.2012, 18:18 22
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
как вариант поставь, что нибудь другое кроме MinGW...
Код
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
После исправления (26 и 27 строчки местами поменял):
Код
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
-=ЮрА=-
Заблокирован
Автор FAQ
03.02.2012, 20:58 23
[OFF]
Цитата Сообщение от easybudda Посмотреть сообщение
Что я не так делаю?
- хм занятно, думаю неверно работает компилятор, может оно и верно только в студии отрабатывает
(м.б. я скрин нарисовал???)

PS:Могу сбросить проект в VS2008
0
Миниатюры
Вывести слова которые повторяются и количество их повторения  
easybudda
Модератор
Эксперт CЭксперт С++
10092 / 6002 / 1504
Регистрация: 25.07.2009
Сообщений: 11,382
03.02.2012, 22:45 24
-=ЮрА=-, попробуй всё то же самое, только вместо ввода строки "this is second text" просто ввод нажми.
0
-=ЮрА=-
Заблокирован
Автор FAQ
03.02.2012, 22:50 25
Цитата Сообщение от easybudda Посмотреть сообщение
только вместо ввода строки "this is second text" просто ввод нажми.
text остаётся в буфере(строка ведь не разрушается как при отработке strtok), а что по твоему должно было происходить???
0
easybudda
Модератор
Эксперт CЭксперт С++
10092 / 6002 / 1504
Регистрация: 25.07.2009
Сообщений: 11,382
03.02.2012, 23:42 26
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
text остаётся в буфере(строка ведь не разрушается как при отработке strtok), а что по твоему должно было происходить???
Ну например должно выводиться сообщение, что слов не найдено, или, как я обычно делаю, пустая строка - выход... Но уж точно не предыдущий вывод повторять. Странная какая-то особенность реализации.
0
-=ЮрА=-
04.02.2012, 00:06
  #27

Не по теме:

Цитата Сообщение от easybudda Посмотреть сообщение
Ну например должно выводиться сообщение, что слов не найдено, или, как я обычно делаю, пустая строка - выход...
-
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(true)//Можно будет вводить текст хоть до бесконечности
* * * * {
//Вот тут добавь text[0] = '\0'; ;)
* * * * * * * * WordArray = NULL;
easybudda, я опять удивлён - хорошо в начале цикла здесь пиши text[0] = '\0'; и будет счастье от лицезрения пустого ввода(можно ещё if ввести, чтобы сообщение выводил при пустом вводе - к алгоритму выделения слов это ну никакого отношения не имеет...)
Думаю наша дискусия в рамках данного топика интересна лишь нам двоим, верней мне уже не интересна. Я хотел привести алгоритм отличный от всех приведенных, я привёл большего мне ничего не надо...

0
easybudda
Модератор
Эксперт CЭксперт С++
10092 / 6002 / 1504
Регистрация: 25.07.2009
Сообщений: 11,382
04.02.2012, 01:01 28
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
я опять удивлён - хорошо в начале цикла здесь пиши text[0] = '\0'; и будет счастье от лицезрения пустого ввода(можно ещё if ввести, чтобы сообщение выводил при пустом вводе - к алгоритму выделения слов это ну никакого отношения не имеет...)
Ну подумаешь, память лишняя обнуляется, ну ничего, что на ввод пустой строки программа старые данные выдаёт. Сам алгоритм тоже прекрасен, да и реализован отлично
Код
Enter text(less than 1024 chars)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Segmentation fault
ну так и это поправляется...
А пишу я это всё к тому, что велосипеды всегда (ну или за очень редким исключением) на несколько порядков кривее стандартных функций. И очень важно научиться пользоваться ими, а не городить не бог весть что, чтобы потом не удивляться
Другое дело - попытки написать собственную реализацию стандартных функций, что в общем дело полезное. Пока пишешь, становится понятнее, почему они в стандартной библиотеке текие, какие есть. Но в любом случае очень важно проверять результаты своих стараний, иначе толка от них мало будет...
0
-=ЮрА=-
Заблокирован
Автор FAQ
24.03.2012, 10:38 29
Цитата Сообщение от go Посмотреть сообщение
строку гробит
Кто не дает Вам право сделать копию?
- go, посмотри с какими проблемами сталкиваются люди и почему strtok иногда не применим...
Тип дескриптора на проекцию файла.
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.03.2012, 11:20 30
-=ЮрА=-, насколько я понял, там С++. Дальше не смотрел.
0
-=ЮрА=-
24.03.2012, 12:06
  #31

Не по теме:

Цитата Сообщение от go Посмотреть сообщение
насколько я понял, там С++
- там дело не в том что на Си или плюсах(там кстати API код), а в том что strtok коробит данные отображаемые в память...

0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.03.2012, 12:09 32
-=ЮрА=-, strtok стандартная функция. Любители неуклюжих велосипедов, возможно откажутся от нее. Как и от всей string.h.
0
silent_1991
Эксперт С++
5009 / 3069 / 270
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
24.03.2012, 14:57 33
go, strtok действительно не рекомендуется использовать, и именно по причине того, что она портит исходную строку.
0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.03.2012, 15:10 34
Цитата Сообщение от silent_1991 Посмотреть сообщение
go, strtok действительно не рекомендуется использовать, и именно по причине того, что она портит исходную строку.
Сергей, можно работать и с копией строки. Во всяком случае никто не говорил, что будет просто.
0
easybudda
Модератор
Эксперт CЭксперт С++
10092 / 6002 / 1504
Регистрация: 25.07.2009
Сообщений: 11,382
24.03.2012, 15:26 35
Цитата Сообщение от silent_1991 Посмотреть сообщение
go, strtok действительно не рекомендуется использовать, и именно по причине того, что она портит исходную строку.
Спорить не буду, может кто-то где-то и не рекомендует её использовать, но я бы не заметил такую нерекомендацию. Если так важно сохранять изначальную строку, лучше сделать обёртку, внутри которой в strtok будет передаваться копия строки, нежели мудрить непонятные алгоритмы с незатейливой реализацией.
0
-=ЮрА=-
Заблокирован
Автор FAQ
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
easybudda
Модератор
Эксперт CЭксперт С++
10092 / 6002 / 1504
Регистрация: 25.07.2009
Сообщений: 11,382
24.03.2012, 17:38 37
-=ЮрА=-, много раз уже говорил и ещё раз повторю - велосипеды делать иногда приходится, но нужна достаточно веская причина, чтобы просто задуматься об отказе от стандартных средств, не то, чтобы на самом деле от них отказаться. Текстовая строка длинной в 2+ гигабайта, полностью отображённая в память - сама по себе повод задуматься. В случае строк вменяемой длины (умещающихся в установленный в системе размер буфера) мне бы и в голову не пришло морочиться изобретением велосипедов (будь то учебная програмка в десяток строк или рабочая программа общей длинной в 10К строк). К тому же реализация более, чем сомнительна (28 пост в этой теме). Короче, думаю, не нужно искать проблему там, где её нет. Если на то пошло - можно насочинять уйму задач, для которых мощности персонального компьютера в принципе не хватит. Но это не повод продавать квартиру и переезжать в комнату в коммуналке, став при этом счастливым обладателем небольшого шкафчика напиханного примерно такими железяками и способного за считанные минуты раскодировать инопланетные послания длиной в петабайт символов каждое...
1
-=ЮрА=-
24.03.2012, 18:37
  #38

Не по теме:

easybudda,

Цитата Сообщение от easybudda Посмотреть сообщение
В случае строк вменяемой длинны (умещающихся в установленный в системе размер буфера)
- для ряда задач strtok самое оно, но для других strtok может сыграть плохую шутку и топик я обновил не для того чтобы поругаться, а с совершенно с иной целью, вот.
Цитата Сообщение от easybudda Посмотреть сообщение
такими железяками и способного за считанные минуты раскодировать инопланетные послания длинной в петабайт символов каждое...
- оценил:D плюсую

0
go
Эксперт С++
3637 / 1369 / 243
Регистрация: 16.04.2009
Сообщений: 4,527
24.03.2012, 18:49 39
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- для ряда задач strtok самое оно, но для других strtok может сыграть плохую шутку и топик я обновил не для того чтобы поругаться, а с совершенно с иной целью, вот.
Всем необходимо уметь пользоваться.
0
24.03.2012, 18:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 18:49

Вывести элементы массива, которые повторяются ровно два раза
Массив создать динамический. Язык - С++ Пример: Пусть даны числа:...

Пользователь вводит 8 чисел, вывести числа которые повторяются 2 или больше раз
Я понимаю, в средние века за такой код сжигали на костре. Но я только учусь....

Определить количество слов в тексте, и вывести слова, которые по длине меньше заданного числа
Помогите написать прогу... Не работает..;) /*Дан текст, в котором слова...


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

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

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