IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Множество из гласных букв, Вроде бы все очень просто
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Дана задача: создать множество гласных букв из вводимой с клавиатуры строки. Я вроде бы все написала (чего туту писать то)
Код
const gb=['a','o','e','i','u','y','j'];
var
str:string;
i:integer;
t:set of char;
BEGIN
writeln('stroka - ?'); readln(str);
for i:=1 to length(str) do
if str[i] in gb then include(t,str[i]);

Проблема: если в строке имеется две одинаковые буквы, то в создоваемое множество попадает только одна из них, а нужно все - хоть десять одинаковых. Где может быть недочет?

Сообщение отредактировано: volvo -


--------------------
Наталка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


строка - это тоже как множество символов только упорядоченная, можно туда гласные позапихивать:
Код

var
str1: string;
...
str1:='';
for i:=1 to length(str) do
   if str[i] in gb then str1:=str1+str[i];



--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Недочет - в твоем понимании смысла множества. Помнишь тот анекдот?
Вопрос: сколько поворотов в Лондоне? Ответ: два. Правый и левый. (уже можно смеяться smile.gif )
Вот скажи, сколько в математике чисел 12? или там, "пи"? Их всего по одному. Сколько букв "а" в руссом алфавите? Всего одна, хотя в любой книжке многие тысячи ее изображений. Сколько гласных букв существует? Десять, мы все знаем это с первого класса (как максимум smile.gif ). Так чего же ты еще хочешь? Если понимать задачу, как ты ее написала, буквально - то все правильно. А именно, вопрос можно перефразировать так: какие гласные буквы встретились в строке?
Если же тебя по какой-то причине не удовлетворяет такой ответ, то вопрос надо уточнить примерно так: сколько гласных букв каждого вида встречается в строке? И тогда конструкция должна быть другая. Какая именно - ну, например, массив записей, состоящих из буквы и количества ее вхождений. Можно поступить и так, как сказал hiv - для этого нужно просто выкинуть из строки все согласные. Но мне почему-то кажется, что задачу нужно понимать в первом смысле и не заботиться о количестве (если уж речь идет о множествах). Буквы, как объекты языка, неразличимы. Как типографские символы - различимы. Ты уж определись, что тебе надо..

ps Pank, а как твой DVD - подключился? Ты уж скажи людям.. неудобно - мы же отвечали, переживали..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Цитата
Где может быть недочет?


Множество и мультимонжество - разные вещи, в паскале мультимножество сделать нельзя. Поэтому храниь надо по другому, например в строке, как сделал hiv ;)


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.05.2024 10:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name