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

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

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

> Множество из гласных букв, Вроде бы все очень просто
pank
сообщение 27.01.2006 10:57
Сообщение #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 - 27.01.2006 11:32


--------------------
Наталка
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 3)
hiv
сообщение 27.01.2006 11:29
Сообщение #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 
 К началу страницы 
+ Ответить 
Lapp
сообщение 27.01.2006 16:40
Сообщение #3


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

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

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


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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 28.01.2006 11:05
Сообщение #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

 



- Текстовая версия 21.06.2025 15:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"