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);
не пойму, как теперь работать с отдельными словами
Можно использовать такой алгоритм: заводим дополнительную строку - результирующую. Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования. //описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку. Начинаем анализировать исходную строку с запомненного места.
--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует. На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
Можно использовать такой алгоритм: заводим дополнительную строку - результирующую. Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования. //описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку. Начинаем анализировать исходную строку с запомненного места.
пытаюсь что-то сделать по этому алгоритму, но это все, что смогла, дальше - просто не знаю как реализовывать. помогите.....
uses crt; function one(var st:string;var c:char):string; var i:integer; f:boolean; begin writeln ('vvedite stroky'); read (st); while i<>length(st) do begin f:=true; for i:=1 to ' ' do begin c:=s[1]; while s[i]<>' ' or c:=s[i] do if c=s[i] then f:=true; c:=c+1; end; end;