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

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

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

 
 Ответить  Открыть новую тему 
> Напечатать слова текста, удовлетворяющие условиям
сообщение
Сообщение #1


Новичок
*

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

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


Задача на множества.
Пусть дан текст, заканчивающийся точкой. Текст состоит из слов, разделённых пробелами. Слово - последовательность латинских букв. Напечатайте слова текста, имеющие нечетный номер, в которых нет ни одной повторяющейся буквы.


Алгоритм Решения (доделайте, если можно представьте исходник)

Код

const n_max=1000; {макс длина текста}
        eot='.';
type litters = set of 'a'..'z'; {тип множества лат букв}
var txt:array [1..n_max] of char; {текст}
      {вспомагательные переменные не пишу, т.к. нет решения}

Пусть я ввёл текст
Код

{ввод текста}
procedure read_text;
var i:integer;
begin
   i:=0;
   repeat
      repeat
         i:=i+1;
         read(txt[i]);
      until eoln or (i=n_max) or (txt[i]=eot);
      readln;
   until (i=n_max) or (txt[i]=eot);
   if txt[i]=eot then n:=i-1
   else n:=i;
end;  


Потом как поступать (если можно пример)?
Я понимаю так:
Идём по тексту, если пробел и i нечёт и нет ни одной повторяющейся буквы (как написать функцию?), то заносим слово в множество.
Печатаем.

Помогите люди добрые. Если есть (или напишите) исходник, то выложите пожалуйста. yes2.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Во-первых, "дан текст"... Как он тебе задан? Файл? Строка?

Во-вторых,
Цитата
заносим слово в множество.
- каким, собственно, образом? Во множество ты можешь занести символ, но никак не слово...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Цитата(volvo @ 3.05.2007 13:29) *

Во-первых, "дан текст"... Как он тебе задан? Файл? Строка?


Текст мы вводим сами - ручками.

Тогда как? Если условие true, то печатаем слово, так?
Как напечтать то слово, которое нам нужно?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






var
s: string;
my_set: set of char;
ok: boolean;
i, start: integer;

begin
s := 'begin end start finish 121213 1234567.'; { <--- Вводи ручками, для отладки - задано здесь }
start := i; my_set := []; ok := true;
for i := 1 to length(s) do begin
if s[i] in [' ', '.'] then begin

if ok then writeln(copy(s, start, i - start));
my_set := []; ok := true;
start := i + 1;

end
else begin
ok := ok and (not (s[i] in my_set));
include(my_set, s[i]);
end;

end;

end.

 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Ручками, то бишь по процедуре read_txt (см. первое сообщение)
 К началу страницы 
+ Ответить 

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

 





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