Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/47: Рейтинг темы: голосов - 47, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 21

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

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

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


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

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


помогите
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.01.2012, 22:46
Ответы с готовыми решениями:

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

Найти и вывести на экран все элементы, которые которые повторяются более N/2 раз
#include "stdafx.h" #include <iostream> #include <fstream> using namespace std; int _tmain() { ifstream f ("d:\\base1.txt"); ...

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

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

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Ниже отработка для 2-го ввода
2 теста
, как вариант поставь, что нибудь другое кроме MinGW...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
03.02.2012, 18:18
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
как вариант поставь, что нибудь другое кроме MinGW...
Code
1
2
3
4
5
6
7
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 строчки местами поменял):
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
03.02.2012, 20:58
[OFF]
Цитата Сообщение от easybudda Посмотреть сообщение
Что я не так делаю?
- хм занятно, думаю неверно работает компилятор, может оно и верно только в студии отрабатывает
(м.б. я скрин нарисовал???)

PS:Могу сбросить проект в VS2008
Миниатюры
Вывести слова которые повторяются и количество их повторения  
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
03.02.2012, 22:45
-=ЮрА=-, попробуй всё то же самое, только вместо ввода строки "this is second text" просто ввод нажми.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
03.02.2012, 22:50
Цитата Сообщение от easybudda Посмотреть сообщение
только вместо ввода строки "this is second text" просто ввод нажми.
text остаётся в буфере(строка ведь не разрушается как при отработке strtok), а что по твоему должно было происходить???
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
03.02.2012, 23:42
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
text остаётся в буфере(строка ведь не разрушается как при отработке strtok), а что по твоему должно было происходить???
Ну например должно выводиться сообщение, что слов не найдено, или, как я обычно делаю, пустая строка - выход... Но уж точно не предыдущий вывод повторять. Странная какая-то особенность реализации.
0
04.02.2012, 00:06

Не по теме:

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

0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
04.02.2012, 01:01
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
я опять удивлён - хорошо в начале цикла здесь пиши text[0] = '\0'; и будет счастье от лицезрения пустого ввода(можно ещё if ввести, чтобы сообщение выводил при пустом вводе - к алгоритму выделения слов это ну никакого отношения не имеет...)
Ну подумаешь, память лишняя обнуляется, ну ничего, что на ввод пустой строки программа старые данные выдаёт. Сам алгоритм тоже прекрасен, да и реализован отлично
Code
1
2
3
Enter text(less than 1024 chars)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Segmentation fault
ну так и это поправляется...
А пишу я это всё к тому, что велосипеды всегда (ну или за очень редким исключением) на несколько порядков кривее стандартных функций. И очень важно научиться пользоваться ими, а не городить не бог весть что, чтобы потом не удивляться
Другое дело - попытки написать собственную реализацию стандартных функций, что в общем дело полезное. Пока пишешь, становится понятнее, почему они в стандартной библиотеке текие, какие есть. Но в любом случае очень важно проверять результаты своих стараний, иначе толка от них мало будет...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.03.2012, 10:38
Цитата Сообщение от go Посмотреть сообщение
строку гробит
Кто не дает Вам право сделать копию?
- go, посмотри с какими проблемами сталкиваются люди и почему strtok иногда не применим...
Тип дескриптора на проекцию файла.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.03.2012, 11:20
-=ЮрА=-, насколько я понял, там С++. Дальше не смотрел.
0
24.03.2012, 12:06

Не по теме:

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

0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.03.2012, 12:09
-=ЮрА=-, strtok стандартная функция. Любители неуклюжих велосипедов, возможно откажутся от нее. Как и от всей string.h.
0
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
24.03.2012, 14:57
go, strtok действительно не рекомендуется использовать, и именно по причине того, что она портит исходную строку.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
24.03.2012, 15:10
Цитата Сообщение от silent_1991 Посмотреть сообщение
go, strtok действительно не рекомендуется использовать, и именно по причине того, что она портит исходную строку.
Сергей, можно работать и с копией строки. Во всяком случае никто не говорил, что будет просто.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
24.03.2012, 15:26
Цитата Сообщение от silent_1991 Посмотреть сообщение
go, strtok действительно не рекомендуется использовать, и именно по причине того, что она портит исходную строку.
Спорить не буду, может кто-то где-то и не рекомендует её использовать, но я бы не заметил такую нерекомендацию. Если так важно сохранять изначальную строку, лучше сделать обёртку, внутри которой в strtok будет передаваться копия строки, нежели мудрить непонятные алгоритмы с незатейливой реализацией.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
24.03.2012, 16:01
easybudda, давай тогда завершим нашу дискусию по поводу strtok - сфера применения strtok простенькие програмки не требующие особых навыков работы. В общем случае строка может быть слишком большой чтобы делать для неё 2-й буфер. Да можно реализовать достаточно простой алгоритм для c strtok и 2-м буфером(увеличив ресурсозатратность нашей програмки ровно в 2 раза), либо всё же сесть и раз и на всегда написать аналог strtok и не мудрить с памятью.
Суть strtok в следующем - она забивает строку нулями кроме отличных от разделителй символов, а потом последовательно выдаёт нам то что между ноликами в виде очередной дозы токенов.
Логика scanf в выборке токенов подходящего формата - оба алгоритма заслуживают на жизнь и гнуть палку в сторону strtok не следует. Лично да часто использую strtok - да она проста и давать ответы с ней на форуме легко, но иногда можно встретиться с ограничениями когда и ввести 2-й то буфер нельзя. Что если у тебя есть дескриптор отображённого в память файла, что если туда отображено 100 Мб и в этих 100 Мб нужно выловить какой либо строковый-ключ, причём критически важно чтобы оперативку больше уже ничего не писали. Задачи разные бывают для одних strtok - то самое оно, а для других Г на постном масле. Своим алгоритмом по принципу scanf свободно мог бы почитывать отражённый файл извлекая из него нужное (читал бы посредством ReadFile а то ещё и к этому придерёшся)
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
24.03.2012, 17:38
-=ЮрА=-, много раз уже говорил и ещё раз повторю - велосипеды делать иногда приходится, но нужна достаточно веская причина, чтобы просто задуматься об отказе от стандартных средств, не то, чтобы на самом деле от них отказаться. Текстовая строка длинной в 2+ гигабайта, полностью отображённая в память - сама по себе повод задуматься. В случае строк вменяемой длины (умещающихся в установленный в системе размер буфера) мне бы и в голову не пришло морочиться изобретением велосипедов (будь то учебная програмка в десяток строк или рабочая программа общей длинной в 10К строк). К тому же реализация более, чем сомнительна (28 пост в этой теме). Короче, думаю, не нужно искать проблему там, где её нет. Если на то пошло - можно насочинять уйму задач, для которых мощности персонального компьютера в принципе не хватит. Но это не повод продавать квартиру и переезжать в комнату в коммуналке, став при этом счастливым обладателем небольшого шкафчика напиханного примерно такими железяками и способного за считанные минуты раскодировать инопланетные послания длиной в петабайт символов каждое...
1
24.03.2012, 18:37

Не по теме:

easybudda,

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

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

Решение

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- для ряда задач strtok самое оно, но для других strtok может сыграть плохую шутку и топик я обновил не для того чтобы поругаться, а с совершенно с иной целью, вот.
Всем необходимо уметь пользоваться.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.03.2012, 18:49

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru