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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> слова с повторяющимися символами
18192123
сообщение 14.11.2006 19:53
Сообщение #1


Профи
****

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

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


Дана строка, состоящая из слов, разделенных пробелом. Удалить из строки слова, содержащие повторяющиеся символы. ( c помощью функций, не использовать стандартн. ф-ции и процедуры для строк, кроме lenght,ord,char)


единственное, что пока сделала , нашла количество слов в строке

var
   st:string[40];
   i,k:integer;
begin
readln (st);
for i:=1 to length(st) do
    if st[i]=' ' then k:=k+1;
    writeln ('k=', k);



не пойму, как теперь работать с отдельными словами

Сообщение отредактировано: 18192123 - 20.11.2006 17:38
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.11.2006 20:10
Сообщение #2


Гость






Зайди вот сюда: Разбиение на слова. Все способы.

и посмотри...
 К началу страницы 
+ Ответить 
18192123
сообщение 18.11.2006 21:52
Сообщение #3


Профи
****

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

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


Цитата(volvo @ 14.11.2006 20:10) *

Зайди вот сюда: Разбиение на слова. Все способы.

и посмотри...

а как мне действоавть дальше (после разбиения на слова)?
организ. массив из отдельных слов?
но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 19.11.2006 13:30
Сообщение #4


Профи
****

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

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


Цитата(18192123 @ 18.11.2006 21:52) *

а как мне действоавть дальше (после разбиения на слова)?
организ. массив из отдельных слов?
но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди?

решила разбить строку на слова по этому образцу

const

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

   TWords = array[1..40] of string;

var
   text : string;
   words : TWords;

function GetWords(s : string; var w : TWords) : byte;
var
   i,back,n : byte;
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);
         w[n] := copy(s, back, i-back);
      end;
   end;

   GetWords := n;
end;


а дальше - не знаю,
подскажите алгоритм дальнейших действий пожалуйста
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 19.11.2006 19:55
Сообщение #5


Профи
****

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

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


Цитата(18192123 @ 18.11.2006 21:52) *

а как мне действоавть дальше (после разбиения на слова)?
организ. массив из отдельных слов?
но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди?

помогите пожалуйста с алгоритмом решения,
а дальше я сама попробую, только подскажите, как дальше !help.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 19.11.2006 21:50
Сообщение #6


Профи
****

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

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


Цитата(18192123 @ 19.11.2006 19:55) *

помогите пожалуйста с алгоритмом решения,
а дальше я сама попробую, только подскажите, как дальше !help.gif

ну пожалуйста, помогите, мне эта задача уже чуть ли не снится, а сдать надо уже в четверг
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 19.11.2006 22:37
Сообщение #7


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


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


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 19.11.2006 22:56
Сообщение #8


Профи
****

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

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


Цитата(мисс_граффити @ 19.11.2006 22:37) *

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

проблема в том, что я не знаю, как сделать, поэтому и прошу помочь
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 19.11.2006 23:41
Сообщение #9


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


взяла слово-строчку, считала из нее символ (первый). удалила. смотришь - если он еще раз встречается в строчке, удаляешь ее всю. если нет - читаешь следующий.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 20.11.2006 0:18
Сообщение #10


Профи
****

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

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


Цитата(мисс_граффити @ 19.11.2006 23:41) *

взяла слово-строчку, считала из нее символ (первый). удалила. смотришь - если он еще раз встречается в строчке, удаляешь ее всю. если нет - читаешь следующий.
а для чего мне удалять первый символ? на каком основании?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 20.11.2006 15:29
Сообщение #11


Профи
****

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

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


Цитата(18192123 @ 20.11.2006 0:18) *

а для чего мне удалять первый символ? на каком основании?

а как разбить строчку на слова, если мне запрещено использовать любые стандартные процедуры и функции для строк за исключением ord, lenght
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.11.2006 16:29
Сообщение #12


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


а где про это сказано???

если запрещено - не разбивай.
запоминаешь первый символ. идешь до пробела... если этот символ встретился - удаляешь слово (кусок до пробела. как это сделать - подумай сама). если не встретился - берешь второй символ. идешь до пробела.... и так далее. потом анализируешь промежуток между следующими пробелами.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 20.11.2006 17:35
Сообщение #13


Профи
****

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

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


Цитата(мисс_граффити @ 20.11.2006 16:29) *

а где про это сказано???

если запрещено - не разбивай.
запоминаешь первый символ. идешь до пробела... если этот символ встретился - удаляешь слово (кусок до пробела. как это сделать - подумай сама). если не встретился - берешь второй символ. идешь до пробела.... и так далее. потом анализируешь промежуток между следующими пробелами.


вот... но только не поняла, как применить ко всем словам в строке,
мож сначала посчитать их количество или с использованием lenght?

я пока попыталась разобраться с первым словом


uses crt;
const p=' ';
function one(var st:string; c:char):string;
var k,i:integer;
begin
k:=0;
while st[i]<>p do k:=k+1; {хочу посчит. сколько символов в первом слове}
c:=st[1];
for i:=1 to k do
while st[i]<>p do if st[i]=c then st[0]:=char(ord(st[0]-k);
one:=st;
end;


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.11.2006 18:21
Сообщение #14


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


а зачем тебе их количество?
ты же идешь по строке последовательно... просто отслеживай пробелы.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 20.11.2006 20:56
Сообщение #15


Профи
****

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

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


Цитата(мисс_граффити @ 20.11.2006 18:21) *

а зачем тебе их количество?
ты же идешь по строке последовательно... просто отслеживай пробелы.


uses crt;
const p=' ';
function one(var st:string; c:char):string;
var k,i:integer;
begin
for i:=1 to length(st) do
while st[i]<>p do
  begin
     k:=0;
     while st[i]<>p do k:=k+1;
     c:=st[1];
     for i:=1 to k do
     while st[i]<>p do if st[i]=c then st[0]:=char(ord(st[0])-k);
  end;
one:=st;
end;
VAR
   st:string;
   c:char;
BEGIN
read (st);
write (one(st,c));
readkey;
end.

дальше этой строчки компиляция не идет, выдает несоответствие типов



st[0]:=char(ord(st[0]-k);




Сообщение отредактировано: 18192123 - 21.11.2006 0:11
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 20.11.2006 23:02
Сообщение #16


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


у тебя скобочек в ней не хватает.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 20.11.2006 23:38
Сообщение #17


Профи
****

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

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


Цитата(мисс_граффити @ 20.11.2006 23:02) *

у тебя скобочек в ней не хватает.

скобочку я доставила, но теперь я ввожу строку и все...... дальше ничего не выдает

Сообщение отредактировано: 18192123 - 21.11.2006 0:11
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.11.2006 1:51
Сообщение #18


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


если ты хочешь делать
c:=st[1];

то исправь вот это:
function one(var st:string; var c:char):string;


Можно использовать такой алгоритм: заводим дополнительную строку - результирующую.
Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования.
//описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ
Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку.
Начинаем анализировать исходную строку с запомненного места.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 21.11.2006 18:23
Сообщение #19


Профи
****

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

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


Цитата(мисс_граффити @ 21.11.2006 1:51) *


Можно использовать такой алгоритм: заводим дополнительную строку - результирующую.
Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования.
//описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ
Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку.
Начинаем анализировать исходную строку с запомненного места.


я поняла, как нужно действовать в этой задаче, но больше ничего не получается(может опыта не хватает, может и ума...), в общем реализовать не получается. можешь объяснить именно насчет реализации
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 21.11.2006 18:48
Сообщение #20


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


написать за тебя код?
нет, не могу.
потому что ты даже пробовать не хочешь! я тебе алгоритм подробно расписала. если какие-то моменты неясные - спрашивай.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 

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