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

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

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

 
 Ответить  Открыть новую тему 
> Исходник, править, Решение задачи (множества)
сообщение
Сообщение #1


Гость






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

Моё решение (скорее набросок):
Код

const n_max=1000; {макс длина текста}
      eot='.';
type litters = set of 'a'..'z'; {тип множества лат букв}
var txt:array [1..n_max] of char; {текст}
    m:litters; s:string; i,n:integer;  f:boolean; c:char;

{процедура ввода текста (по строкам)}
procedure read_text;
var i:integer;
begin
  Writeln ('Введите текст: ');
  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;

{процедура поиска и печати. чёт не то чую}
procedure find;
var  i:integer;
begin
  i:=1;
  repeat
    s:=''; m:=[]; f:=false;
    repeat
      f:=txt[i] in m;
      m:=m+[txt[i]]; s:=s+txt[i];
    until (txt[i]=' ') or f or (txt[i]='.');
      if not f and odd(i) then write(s);
      i:=i+1
  until txt[i]='.';
  readln;
end;

begin {main}

  read_text;
  find;
  readln;
end.


Вот такие вот дела. Помогите чем сможете...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Помощник капитана
****

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

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


Используй лучше массив строк + Разделение строки на слова + поиск

Сообщение отредактировано: Артемий -


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(Артемий @ 12.05.2007 21:45) *

Используй лучше массив строк
Не думаю, что этот вариант лучше. нам всё-таки каждый символ перебирать придётьтя. может есть другие предложения?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ребята, не получается! Помогите решением
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


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

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

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


Массивы тут не нужны

const
limits = [#0..#32,'.',',',':',';','!','?','"'];

procedure CheckWords(s : string);
var
i, j, k, back, n: byte;
flag: Boolean;
begin
i := 1;
n := 0;
while(i<=length(s)) do begin

while(i<=length(s)) and (s[i] in limits) do inc(i);

if i<=length(s) then begin

back := i;

while(i<=length(s)) and not(s[i] in limits) do inc(i);

inc(n);

if odd(n) then begin
flag := true;
k := back;
while (k < i) and (flag) do begin
j := k + 1;
while (j <= i) and (s[k] <> s[j]) do inc(j);
if (j > i) then inc(k) else flag := false;
end;
if flag then writeln(Copy(s, back, i - back))
end;

end;
end;
end;

begin
CheckWords('qewe rty iuw 123 456');
end.


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


Гость






Проблема в том, что мне обязательно нужно использовать множества. Вот и заганяюсь. Может решить можно по-другому?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


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

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

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


А что, в приведенной выше программе использование множеств ты не заметил ?


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


Гость






Извини смотрю через мобилку. тупанул. огромное спасибо
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





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

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


Ребята!!Помогите с сортировкой записей по полю строкового типа в алфавитном порядке!!Пожалуйста!!!Ни до кого не могу достучаться!!!!


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


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

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

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


Цитата(shutka @ 14.05.2007 11:58) *

Ребята!!Помогите ...

Shutka, влезать в чужие темы со своими не относящимися к делу вопросами, во-первых, запрещено Правилами, а во-вторых - неприлично. Устное предупреждение


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


Гость






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


Гость






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


Гость






Ребята, давайте всё же продолжим дискуссию по теме. Интересно, ч0 процедура поиска не работает.
 К началу страницы 
+ Ответить 

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

 





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