Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 18.11.2010, 23:17   #1
KingMaks
Знающий
 
Аватар для KingMaks
 
Регистрация: 26.11.2009
Сообщений: 313
Написано 35 полезных сообщений
(для 95 пользователей)
Множества

Нужна помощь в написании алгоритма:

Дана непустая последовательность слов из строчных русских букв; между соседними
словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все согласные буквы,
которые входят только в одно слово; все глухие согласные буквы, которые не входят только в одно слово.


Есть строка.Проверил я её на наличие согласных букв, а как проверить повторяются ли эти буквы и как расположить их в алфавитном порядке?
__________________
StimuL
Maks
(Offline)
 
Ответить с цитированием
Старый 18.11.2010, 23:25   #2
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Множества

Записываешь согласные буквы в массив, но перед записью смотришь, нет ли в массиве уже такой буквы. По поводу расположения - кури сортировку.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KingMaks (19.11.2010)
Старый 18.11.2010, 23:29   #3
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,853 пользователей)
Ответ: Множества

Сообщение от KingMaks Посмотреть сообщение
Нужна помощь в написании алгоритма:

Дана непустая последовательность слов из строчных русских букв; между соседними
словами - запятая, за последним словом - точка. Напечатать в алфавитном порядке все согласные буквы,
которые входят только в одно слово; все глухие согласные буквы, которые не входят только в одно слово.


Есть строка.Проверил я её на наличие согласных букв, а как проверить повторяются ли эти буквы и как расположить их в алфавитном порядке?
Ну смотри. Пробегаешься по согласным буквам и каждую добавляешь в некий список. Перед добавлением каждой новой буквы осуществляешь проверку нет ли её в списке. После этого простая сортировка в алфавитном порядке.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KingMaks (19.11.2010)
Старый 19.11.2010, 00:15   #4
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: Множества

кроме того просто для справки, чем дальше в алфавит зайдешь в строчных буквах, тем больше код в ASCII.
тоесть Chr(a)=Chr(б)-1=...=Chr(я)-32
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KingMaks (19.11.2010)
Старый 19.11.2010, 00:24   #5
IGR
Blitz's Shame !!
 
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений
(для 2,013 пользователей)
Ответ: Множества

изначально создать масивчик гласных букв (их 10 да ??)
Пербирать все символы в твоем тексте пока не точка !!
Сравнивать каждый с каждым елементом в массиве гласных (момент определения вхождение объекта в некое множество), увеличиваем счетчик для текущего символа, если он есть в массиве гласных !!
Важно учесть тот факт что буква может быть джва раза в слове (или больше), соу когда нашел запятую нужно обозначить что переходиш в новое слово !! А если еще не перешол то естественно счетчик не инкрементируеш для символа !!
Надеюсь понятно !! Надеюсь есть решения попроще !! :крейзи:
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
KingMaks (21.11.2010)
Старый 19.11.2010, 00:25   #6
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Множества

Собственно забыли о том, что:

Сообщение от KingMaks Посмотреть сообщение
Напечатать в алфавитном порядке все согласные буквы, которые входят только в одно слово;
Алгоритм такой:
1. Разбить строку на слова, используя разделитель (запятую).
2. Создать временный массив для хранения обработанных согласных.
2. Создать временный массив для хранения не повторяющихся согласных.
3. Цикл по словам.
4. Вложенный цикл по буквам в словах.
5. Если найдена согласная - проверить обработана она или нет. Если не обработана то:
    а) установить флаг повторяющейся согласной в false.
    б) вложенный цикл по словам, исключая текущее и обработанные, т.е. начиная со следующего.
    в) вложенный цикл по буквам в словах.
    г) если буква найдена, то ставим флаг, что идентичная согласная найдена в true, т.е. повторяется и прерываем циклы.
    д) по завершении двух последних циклов, если флаг повторяющейся согласной false, то добавляем ее в массив не повторяющихся согласных
    е) добавляем согласную в массив обработанных.
6. Сортировка согласных в массиве не повторяющихся сравнивая их коды символов.
7. Вывод на экран.
Вторая задача аналогична.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
KingMaks (21.11.2010), Reks888 (19.11.2010)
Старый 21.11.2010, 22:59   #7
KingMaks
Знающий
 
Аватар для KingMaks
 
Регистрация: 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[iin sogl then
begin
s
:=s+stroka[i];
end;
writeln(s);

writeln(s);
readln;
end.[/i


Вот допустим строка:
Помидор, стул, стол, бревно, бить.
После пропуска в программе выходит:
мдр, л, л, брвн, б.
Как же мне оставить только те что повторяются лишь в одном слове?
в данном случае:
мд.

столько всего уже перепробовал и не выходит.
__________________
StimuL
Maks
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 00:28.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com