1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Дана строка, состоящая из слов, разделенных пробелом. Удалить из строки слова, содержащие повторяющиеся символы. ( 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);
не пойму, как теперь работать с отдельными словами
а как мне действоавть дальше (после разбиения на слова)? организ. массив из отдельных слов? но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди?
а как мне действоавть дальше (после разбиения на слова)? организ. массив из отдельных слов? но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди?
решила разбить строку на слова по этому образцу
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;
а дальше - не знаю, подскажите алгоритм дальнейших действий пожалуйста
а как мне действоавть дальше (после разбиения на слова)? организ. массив из отдельных слов? но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди?
помогите пожалуйста с алгоритмом решения, а дальше я сама попробую, только подскажите, как дальше
а чего она тебе снится? из-за того, что скопировала кусок кода из FAQ? ты сама хоть что-нибудь попробуй делать - тогда поможем.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
взяла слово-строчку, считала из нее символ (первый). удалила. смотришь - если он еще раз встречается в строчке, удаляешь ее всю. если нет - читаешь следующий.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
взяла слово-строчку, считала из нее символ (первый). удалила. смотришь - если он еще раз встречается в строчке, удаляешь ее всю. если нет - читаешь следующий.
а для чего мне удалять первый символ? на каком основании?
если запрещено - не разбивай. запоминаешь первый символ. идешь до пробела... если этот символ встретился - удаляешь слово (кусок до пробела. как это сделать - подумай сама). если не встретился - берешь второй символ. идешь до пробела.... и так далее. потом анализируешь промежуток между следующими пробелами.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
если запрещено - не разбивай. запоминаешь первый символ. идешь до пробела... если этот символ встретился - удаляешь слово (кусок до пробела. как это сделать - подумай сама). если не встретился - берешь второй символ. идешь до пробела.... и так далее. потом анализируешь промежуток между следующими пробелами.
вот... но только не поняла, как применить ко всем словам в строке, мож сначала посчитать их количество или с использованием 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;
а зачем тебе их количество? ты же идешь по строке последовательно... просто отслеживай пробелы.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
а зачем тебе их количество? ты же идешь по строке последовательно... просто отслеживай пробелы.
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.
дальше этой строчки компиляция не идет, выдает несоответствие типов
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Можно использовать такой алгоритм: заводим дополнительную строку - результирующую. Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования. //описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку. Начинаем анализировать исходную строку с запомненного места.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Можно использовать такой алгоритм: заводим дополнительную строку - результирующую. Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования. //описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку. Начинаем анализировать исходную строку с запомненного места.
я поняла, как нужно действовать в этой задаче, но больше ничего не получается(может опыта не хватает, может и ума...), в общем реализовать не получается. можешь объяснить именно насчет реализации
написать за тебя код? нет, не могу. потому что ты даже пробовать не хочешь! я тебе алгоритм подробно расписала. если какие-то моменты неясные - спрашивай.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!