Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2020, 14:13   #1
3a9lu
Новичок
Джуниор
 
Регистрация: 22.11.2020
Сообщений: 3
Восклицание Двухбуквенные сочетания.

Сижу уже пару часов и не знаю как это сделать. На c++.

Дан текст, он уже есть в переменной типа char (там есть пробелы, специальные символы), нужно вывести все двухбуквенный сочетания, имеющиеся в тексте (текст уже в переменной типа char) и их количество. Например:
Хороший день, не правда ли?
хо - 1
ор - 1
ро - 1
ош - 1
ши - 1
ий - 1
не - 1
пр - 1
ав - 1
вд - 1
да - 1
Я думаю суть ясна.
3a9lu вне форума Ответить с цитированием
Старый 22.11.2020, 19:54   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Непонятно - а "день" куда девался?
digitalis вне форума Ответить с цитированием
Старый 22.11.2020, 20:47   #3
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Вариант в лоб:
1. Массив из 65536 элементов.
2. Обнуляем массив.
3. Цикл по i от 1 до длины строки -1
4. Вычисляем индекс в массива: idx=str[i]+str[i-1]*256
5. Увеличиваем элемент idx в массиве (++).
6. Конец цикла по i
7. Проходим по массиву, если значение элемента > 0, то из индекса получаем символы: i / 256 и i % 256.
8. Количество это значение данного элемента массива.
Arigato вне форума Ответить с цитированием
Старый 22.11.2020, 23:33   #4
ep1ckby
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 20
По умолчанию

1. Создаешь цикл с 2мя проверками(чтобы текущий и следующий элемент были *буквами*.
2. Если условия соблюдены - выводишь на экран(cout << arr[i] << arr[i+1]<< endl
ep1ckby вне форума Ответить с цитированием
Старый 23.11.2020, 01:08   #5
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Цитата:
Сообщение от ep1ckby Посмотреть сообщение
Если условия соблюдены - выводишь на экран
Только там надо еще и количество вывести.
Arigato вне форума Ответить с цитированием
Старый 23.11.2020, 01:18   #6
ep1ckby
Пользователь
 
Регистрация: 15.10.2020
Сообщений: 20
По умолчанию

Arigato, А что подразумевается под количеством ? количество одинаковых комбинаций ?
пример:
ап 1
па 1
ыв 1
ра 1
ап 2 (при повторение 2*букв* становиться 2)

или должно быть 1 2 3 4 5 6 7 8 9 10 ?)
ep1ckby вне форума Ответить с цитированием
Старый 23.11.2020, 09:10   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
7. Проходим по массиву, если значение элемента > 0, то из индекса получаем символы: i / 256 и i % 256.
и пропускаем ненужные (не буквы).
Цитата:
(там есть пробелы, специальные символы)
Цитата:
нужно вывести все двухбуквенный сочетания,
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 23.11.2020, 11:26   #8
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 16,218
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
и пропускаем ненужные (не буквы).
Ну это уже детали реализации. Проверить на диапазон кодов букв не проблема.
Arigato вне форума Ответить с цитированием
Старый 23.11.2020, 15:55   #9
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 954
По умолчанию

Интеграл букв дальновидно освещает моя тема

https://www.programmersforum.ru/show...7&postcount=89

Интеграл букв: все комбинации букв всех слов

https://www.programmersforum.ru/show...37#post1820937

Код:
ХОРОШИЙДЕНЬНЕПРАВДАЛИ

4	А	Д		4	А	Е		4	А	И
4	А	Н		4	А	О		4	А	Р
4	Д	Е		4	Д	И		4	Д	Н
4	Д	О		4	Д	Р		4	Е	И
4	Е	Н		4	Е	О		4	Е	Р
4	И	Н		4	И	О		4	И	Р
4	Н	О		4	Н	Р		4	О	Р
2	А	В		2	А	Й		2	А	Л
2	А	П		2	А	Х		2	А	Ш
2	А	Ь		2	В	Д		2	В	Е
2	В	И		2	В	Н		2	В	О
2	В	Р		2	Д	Й		2	Д	Л
2	Д	П		2	Д	Х		2	Д	Ш
2	Д	Ь		2	Е	Й		2	Е	Л
2	Е	П		2	Е	Х		2	Е	Ш
2	Е	Ь		2	И	Й		2	И	Л
2	И	П		2	И	Х		2	И	Ш
2	И	Ь		2	Й	Н		2	Й	О
2	Й	Р		2	Л	Н		2	Л	О
2	Л	Р		2	Н	П		2	Н	Х
2	Н	Ш		2	Н	Ь		2	О	П
2	О	Х		2	О	Ш		2	О	Ь
2	П	Р		2	Р	Х		2	Р	Ш
2	Р	Ь		1	В	Й		1	В	Л
1	В	П		1	В	Х		1	В	Ш
1	В	Ь		1	Й	Л		1	Й	П
1	Й	Х		1	Й	Ш		1	Й	Ь
1	Л	П		1	Л	Х		1	Л	Ш
1	Л	Ь		1	П	Х		1	П	Ш
1	П	Ь		1	Х	Ш		1	Х	Ь
1	Ш	Ь

проверяем число комбинаций 14 уникальных букв
= 14*13/2 = 7*13 = 91
значит правильно

однако моя программа ещё улучшилась
чтобы квадратная матрица стала бы как пирамида

зато программа на другом языке
хорошо бы работала через онлайн компилятор
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую

Последний раз редактировалось сфинкс; 24.11.2020 в 00:02.
сфинкс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сочетания и Размещения swillrocker Помощь студентам 1 14.11.2011 03:15
Буквенные сочетания. KorPaEv Общие вопросы C/C++ 3 16.09.2011 19:58
Java Двухбуквенные сочетания 0479 Помощь студентам 2 31.10.2010 22:59
Клавиатурные сочетания kzld Microsoft Office Excel 2 13.09.2010 14:51
Сочетания. Пaвeл Помощь студентам 2 12.03.2009 07:57