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

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

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

 
 Ответить  Открыть новую тему 
> Строки
JoKe
сообщение 19.12.2008 13:20
Сообщение #1





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

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


Среди нескольких предложений найдите то, которое содержит наибольшее количество разных букв.
Задачу решить с использованием процедур.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
maksimla
сообщение 19.12.2008 15:57
Сообщение #2


Знаток
****

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

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


только букв или включая символы все и пробелы а?

Добавлено через 2 мин.
а правда ты чтонибудь решил или сделал насщет этой задачки?


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
JoKe
сообщение 19.12.2008 18:02
Сообщение #3





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

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


включая все символы и пробелы
нет, не решил, я сообразить не могу никак sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 19.12.2008 21:23
Сообщение #4


Профи
****

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

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


Сам подсчет количества можно сделать так:
описываешь множество символов {var ch: set of char}, идешь по строке и сверяешь, если символа нет в множестве {if not (s[j] in ch) then}, то добавляешь его туда {ch:=ch+[s[j]]} и увеличиваешь количество..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
JoKe
сообщение 20.12.2008 11:19
Сообщение #5





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

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


Цитата
{var ch: set of char}


что такое set of char? я знаю, что char это символьный тип, а вот что такое set...

я учусь на первом курсе (1 семестр), так что нужно как можно проще...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 20.12.2008 11:39
Сообщение #6


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

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

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


Цитата(JoKe @ 20.12.2008 11:19) *
что такое set of char? я знаю, что char это символьный тип, а вот что такое set...

я учусь на первом курсе (1 семестр), так что нужно как можно проще...
set - это множество. Посмотри про него в том учебнике, по которому вы учитесь.

Именно с использованием множества как раз и будет наиболее просто. Все остальные способы, боюсь, будут сложнее.


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


Гость






Идея такая: символы, которые уже встречались, хранишь в строке, проверять очень удобно, если pos возвращает ненулевой результат, то буква уже была, если ноль - то еще не было. "Помечать" символ уже существующим тоже удобно: просто добавить его к строке... Вот так, например (я все прокомментировал, попробуй разобраться, если чего не понятно - спрашивай).
procedure check_letters(ch: char; var letrs: string);
begin
{
Проверяем, встречался ли уже символ раньше в этом предложении,
если не было - добавляем его к строке
}
if pos(ch, letrs) = 0 then letrs := letrs + ch;
end;

var
s, sent, max_sent, letters: string;
i, max_let: integer;
begin
s := 'abcd def. bbabbde yrye, trtkj! defrertyyl? trtll.'; { исходная строка }
sent := ''; letters := ''; max_sent := ''; max_let := 0;
for i := 1 to length(s) do begin { пробегаем по всем символам строки }

if s[i] in ['.', '!', '?'] then begin { закончилось предложение? }
if length(letters) > max_let then begin { разных букв больше, чем максимальное до сих пор количество? }
{ Да, запоминаем новый максимум, и запоминаем предложение}
max_let := length(letters); max_sent := sent;
end;

{ В любом случае подготовимся к обработке следующего предложения: обнулим все, что нужно }
sent := ''; letters := '';
end
else begin
{
Нет, предложение еще не закончилось. Добавляем букву в sent ("собираем" из букв
само предложение), и проверяем, встречалась ли s[ i ] до сих пор - процедурой
}
sent := sent + s[i];
check_letters(s[i], letters);
end;

end;

{ Все, печатаем результат }
writeln('Предложение: "', max_sent, ' " содержит ', max_let, ' разных символов');
end.
 К началу страницы 
+ Ответить 
JoKe
сообщение 21.12.2008 10:54
Сообщение #8





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

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


а если мне нужно проверять любые вводимые с клавиатуры предложения и их может быть любое количество. тогда как быть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.12.2008 10:59
Сообщение #9


Гость






Что значит "любое количество"? Задаются они одной строкой, или как? Если одной, то не вижу проблем: вместо жесткого прописывания строки в коде - запрашивай ее у пользователя, дальнейшая обработка не меняется... Если нет - то объясняй, КАК вводятся данные (хотя это стоило бы сделать в самом первом посте.)
 К началу страницы 
+ Ответить 
JoKe
сообщение 22.12.2008 19:50
Сообщение #10





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

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


разобрался
всем спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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