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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> слова с повторяющимися символами
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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

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


Профи
****

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

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


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

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

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

а как мне действоавть дальше (после разбиения на слова)?
организ. массив из отдельных слов?
но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Профи
****

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

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


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

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

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


Профи
****

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

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


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

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

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


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

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

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


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


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


Профи
****

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

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


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

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

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


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

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

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


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


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


Профи
****

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

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


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

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


Профи
****

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

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


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

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

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


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

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

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


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

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


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


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

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

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


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


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


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

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

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


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


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


Профи
****

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

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


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

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

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

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


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

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

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


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

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


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


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


Профи
****

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

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


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


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


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


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

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

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


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


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

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

 





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