|
Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения |
18.11.2010, 23:17
|
#1
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Множества
Нужна помощь в написании алгоритма:
Дана непустая последовательность слов из строчных русских букв; между соседними
словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все согласные буквы,
которые входят только в одно слово; все глухие согласные буквы, которые не входят только в одно слово.
Есть строка.Проверил я её на наличие согласных букв, а как проверить повторяются ли эти буквы и как расположить их в алфавитном порядке?
__________________
StimuL
Maks
|
(Offline)
|
|
18.11.2010, 23:25
|
#2
|
Дэвелопер
Регистрация: 21.11.2009
Адрес: Афула
Сообщений: 1,700
Написано 658 полезных сообщений (для 1,963 пользователей)
|
Ответ: Множества
Записываешь согласные буквы в массив, но перед записью смотришь, нет ли в массиве уже такой буквы. По поводу расположения - кури сортировку.
__________________
kali surgeon
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.11.2010, 23:29
|
#3
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Множества
Сообщение от KingMaks
Нужна помощь в написании алгоритма:
Дана непустая последовательность слов из строчных русских букв; между соседними
словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все согласные буквы,
которые входят только в одно слово; все глухие согласные буквы, которые не входят только в одно слово.
Есть строка.Проверил я её на наличие согласных букв, а как проверить повторяются ли эти буквы и как расположить их в алфавитном порядке?
|
Ну смотри. Пробегаешься по согласным буквам и каждую добавляешь в некий список. Перед добавлением каждой новой буквы осуществляешь проверку нет ли её в списке. После этого простая сортировка в алфавитном порядке.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.11.2010, 00:15
|
#4
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: Множества
кроме того просто для справки, чем дальше в алфавит зайдешь в строчных буквах, тем больше код в ASCII.
тоесть Chr(a)=Chr(б)-1=...=Chr(я)-32
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.11.2010, 00:24
|
#5
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Множества
изначально создать масивчик гласных букв (их 10 да ??)
Пербирать все символы в твоем тексте пока не точка !!
Сравнивать каждый с каждым елементом в массиве гласных (момент определения вхождение объекта в некое множество), увеличиваем счетчик для текущего символа, если он есть в массиве гласных !!
Важно учесть тот факт что буква может быть джва раза в слове (или больше), соу когда нашел запятую нужно обозначить что переходиш в новое слово !! А если еще не перешол то естественно счетчик не инкрементируеш для символа !!
Надеюсь понятно !! Надеюсь есть решения попроще !! :крейзи:
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
19.11.2010, 00:25
|
#6
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Множества
Собственно забыли о том, что:
Сообщение от KingMaks
Напечатать в алфавитном порядке все согласные буквы, которые входят только в одно слово;
|
Алгоритм такой:
1. Разбить строку на слова, используя разделитель (запятую).
2. Создать временный массив для хранения обработанных согласных.
2. Создать временный массив для хранения не повторяющихся согласных.
3. Цикл по словам.
4. Вложенный цикл по буквам в словах.
5. Если найдена согласная - проверить обработана она или нет. Если не обработана то:
а) установить флаг повторяющейся согласной в false.
б) вложенный цикл по словам, исключая текущее и обработанные, т.е. начиная со следующего.
в) вложенный цикл по буквам в словах.
г) если буква найдена, то ставим флаг, что идентичная согласная найдена в true, т.е. повторяется и прерываем циклы.
д) по завершении двух последних циклов, если флаг повторяющейся согласной false, то добавляем ее в массив не повторяющихся согласных
е) добавляем согласную в массив обработанных.
6. Сортировка согласных в массиве не повторяющихся сравнивая их коды символов.
7. Вывод на экран.
Вторая задача аналогична.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
21.11.2010, 22:59
|
#7
|
Знающий
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений (для 95 пользователей)
|
Ответ: Множества
Что то не получается.
[i]
program 123; const sogl=['Ў','ў','Ј','¤','¦','§','«','¬','*','а',',',' ']; soglgl=['Є','Ї','б','в','д','е','ж','з','и','й',',',' ']; type symbol=set of char; var stroka,s,s1:string; i,k:integer; d:boolean; begin writeln('Vvedite stroku st'); readln(stroka); s:=' '; s1:=' '; d:=false; //poisk soglasnih for i:=1 to length(stroka) do if stroka[i] in sogl then begin s:=s+stroka[i]; end; writeln(s); writeln(s); readln; end.[/i]
Вот допустим строка:
Помидор, стул, стол, бревно, бить.
После пропуска в программе выходит:
мдр, л, л, брвн, б.
Как же мне оставить только те что повторяются лишь в одном слове?
в данном случае:
мд.
столько всего уже перепробовал и не выходит.
__________________
StimuL
Maks
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:20.
|