|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
25.01.2019, 17:36 | #11 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
Помогите пожалуйста завтра надо сдать а я так то плохо знаю С++ а C# нормально но у меня не выкладывается алгоритм как Анаграммы написать на C# если бы я знал хорошо С++ я бы не обращался за помощь спасибо за ранние тем людям которые смогут мне помочь !!
|
25.01.2019, 17:37 | #12 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,707
|
Он не решает поставленной задачи. Единственое, что он делает это вводит слова для аннаграм и выводит отсортировав.
|
25.01.2019, 17:38 | #13 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
Тогда сможете решит за меня ?
|
25.01.2019, 17:38 | #14 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
Написать программу «Анаграммы» (anagrams), которая реализует популярную словесную игру. Игра «Анаграммы» очень интересная и необычная игра в которой нет ни картинок ни слов. Суть игры (программы) заключается в следующем: формируется группа слов, которую можно реализовать в виде кортежа (tuple), компьютер случайным образом выбирает одно из слов и случайным образом переставляет в нём буквы, а затем представляет пользователю (игроку). Цель игрока – угадать выбранное компьютером слово.
Добавлено через 5 минут Но сделать это с помощью процедуры. Добавлено через 5 минут Игра со словами. Анаграмма — это слово, в котором перепутаны буквы, например, "ШАДОЛЬ" - это "ЛОШАДЬ", а "ТИВОНКР" - это "ВТОРНИК". Программа рассчитана на двух игроков, соревнующихся друг с другом. В качестве слов используются только имена существительные, нарицательные, в единственном числе, в именительном падеже. Первый игрок вводит с клавиатуры слово длиной не менее пяти, но не более восьми букв (постарайтесь сделать так, чтобы во время ввода на экране вместо букв отображались символы *). Затем компьютер определяет длину введенного слова, разбирает его на отдельные символы, заносит их в массив, откуда случайным образом выводит на экран. Соперник в течение 2-х минут (время отсчитывает компьютер) должен определить это слово. В случае правильного ответа (вводит его с клавиатуры) он получает 1 очко и сам загадывает слово первому игроку. Игра идет до 5 очков. За неправильный ответ очки не начисляются. Безусловно, приветствуется дружественный интерфейс: запрос и обращение к игрокам по именам, вывод на экран правил игры, графическое и звуковое оформление. Добавлено через 6 минут Помогите исправит ошибки в данном коде на С# только с учётом того что это должно быть всё через процедуру и загрузка из файла должна быть там где хранятся наши слова анаграммы. Как мне это сделать код хотел переписать с С++ на C#? |
25.01.2019, 17:44 | #15 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
А как в C# в строках слова проверять посимвольно, чтоб выдавал правильный результат!
|
25.01.2019, 17:45 | #16 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
Я думаю так только как это реализовать на C#
Поскольку для анаграммы порядок букв неважен, остаются только такие характеристики слова, как использованные буквы и их количество. Самый простой и быстрый вариант - это испортить словарь: отсортировать внутри каждого слова все буквы по алфавиту, а затем сами слова по по алфавиту. Остальное тривиально. Если словарь портить нельзя... Слова с разным количеством букв анаграммами быть не могут - проверяете только слова одинакового размера. Для каждого слова создаете массив счетчиков букв (33, если не различать регистр). Если для двух слов состояния счетчиков букв совпали - они являются анаграммой. Проходите в цикле по списку слов (словарю) и за квадратичное время находите все анаграммы. Если словарь предварительно отсортировать по размеру и по алфавиту, то будет быстрее :-) Как (эквивалентный) вариант, можно выбрать систему счисления с (основание) > (число букв) и (основание) > (максимальная длина слова) и присвоить каждой букве вес - значение единицы отдельного разряда. Тогда, очевидно, все анаграммы будут иметь одинаковый вес. На первом шаге алгоритма за линейное время взвешиваем все слова, на втором - за логарифмическое - сортируем, на третьем - распечатываем все последовательности одинакового веса. На большом словаре, разница в производительности должна быть значительной. В любом случае, задача сводится к построению метрики (оценке расстояния между словами), нечувствительной к порядку букв, но чувствительной к самим буквам и их количеству. Слова с нулевым расстоянием являются анаграммами. |
25.01.2019, 17:46 | #17 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
Вот сам код у меня только переворачивает слова,мне нужно чтобы перебирал буквы
Код:
|
25.01.2019, 17:46 | #18 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
как мне это реализовать ?
|
25.01.2019, 17:48 | #19 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
но с учётом того что Реверсировать ничего не нужно. И переставлять ничего не нужно. От каждого слова нужно построить числовую характеристику ("вес"). И их сравнить.
Вот, начиная с 21 строки, все выбрасываете и делаете как написано в #2. Пусть, например, ваш алфавит состоит из 5 букв: 'к', 'м','о','р', и 'т'. Тогда, (основание) > 5 - это 6. Присваиваем нашим буквам веса: 'к' - 1, 'м' - 6, 'о' - 36, 'р' - 216, 'т' - 1296 Вес слова "мор": 6 + 36 + 216 = 258 Вес слова "ром": 216 + 36 + 6 = 258 Вес слова "кот": 1 + 36 + 1296 = 1333 Вес слова "ток": 1296+ 36 + 1 = 1333 Веса "мор" и "ром" совпали - анаграмма. Веса "кот" и "ток" совпали - анаграмма. Слова разного размера не проверяете. Если не учитывать регистр, букву 'ё', и ограничить максимальный размер слова 32 символами, то для русского алфавита 33 будет подходящим основанием. |
25.01.2019, 17:52 | #20 |
Пользователь
Регистрация: 25.01.2019
Сообщений: 26
|
знаю только что нужно ещё сравнить два слова на совпадения букв
строка - это массив символов. Пробегите по этому массиву и вложенным циклом сопоставляйте текущее значение со всеми остальными или предыдущими. результаты фиксируйте. потом уберите повторения. по окончанию выводите результат. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Составить процедуру, которая во введенной строке заменяет все буквы "а" на "*". Помогите написать программу в Pascal | Tanya121 | Помощь студентам | 4 | 07.11.2018 17:31 |
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" | Бахтиёр1916 | Windows | 1 | 05.04.2017 12:53 |
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") | ZIRASS | PHP | 4 | 15.06.2016 14:23 |
Для заданной строки определить все входящие в неё символ. Например: строка "abccbbabbac" состоит из символов "a", "b" и "c" | Sandakan01 | Помощь студентам | 1 | 24.02.2016 03:20 |