![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Дана строка, состоящая из слов, разделенных пробелом. Удалить из строки слова, содержащие повторяющиеся символы. ( 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 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
|
18192123 |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
а как мне действоавть дальше (после разбиения на слова)? организ. массив из отдельных слов? но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди? |
18192123 |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
а как мне действоавть дальше (после разбиения на слова)? организ. массив из отдельных слов? но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди? решила разбить строку на слова по этому образцу
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;
а дальше - не знаю, подскажите алгоритм дальнейших действий пожалуйста |
18192123 |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
а как мне действоавть дальше (после разбиения на слова)? организ. массив из отдельных слов? но я не знаю, как с этим поступить в моём случае, ведь тогда каждый элемент массива будет сост. из символов, и что мне работать с отдельными словами поочереди? помогите пожалуйста с алгоритмом решения, а дальше я сама попробую, только подскажите, как дальше ![]() |
18192123 |
![]()
Сообщение
#6
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#7
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а чего она тебе снится? из-за того, что скопировала кусок кода из FAQ?
ты сама хоть что-нибудь попробуй делать - тогда поможем. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#8
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#9
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
взяла слово-строчку, считала из нее символ (первый). удалила. смотришь - если он еще раз встречается в строчке, удаляешь ее всю. если нет - читаешь следующий.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#10
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
18192123 |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#12
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а где про это сказано???
если запрещено - не разбивай. запоминаешь первый символ. идешь до пробела... если этот символ встретился - удаляешь слово (кусок до пробела. как это сделать - подумай сама). если не встретился - берешь второй символ. идешь до пробела.... и так далее. потом анализируешь промежуток между следующими пробелами. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#13
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
а где про это сказано??? если запрещено - не разбивай. запоминаешь первый символ. идешь до пробела... если этот символ встретился - удаляешь слово (кусок до пробела. как это сделать - подумай сама). если не встретился - берешь второй символ. идешь до пробела.... и так далее. потом анализируешь промежуток между следующими пробелами. вот... но только не поняла, как применить ко всем словам в строке, мож сначала посчитать их количество или с использованием 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;
|
мисс_граффити |
![]()
Сообщение
#14
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
а зачем тебе их количество?
ты же идешь по строке последовательно... просто отслеживай пробелы. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#15
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
а зачем тебе их количество? ты же идешь по строке последовательно... просто отслеживай пробелы.
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 |
мисс_граффити |
![]()
Сообщение
#16
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
у тебя скобочек в ней не хватает.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#17
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#18
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
если ты хочешь делать
c:=st[1];
то исправь вот это: function one(var st:string; var c:char):string;
Можно использовать такой алгоритм: заводим дополнительную строку - результирующую. Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования. //описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку. Начинаем анализировать исходную строку с запомненного места. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#19
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Можно использовать такой алгоритм: заводим дополнительную строку - результирующую. Анализируем первое слово в строке (посимвольно сравниваем. то есть берем первый символ и сравниваем с каждым следующим, пока не встретим такой же или пробел). Потом так же со вторым символом, с третьим... Пока не дойдем до пробела. Для того, чтобы отследить, были ли повторы, можно использовать логическую переменную. Запоминаем позицию пробела. Это будет начало нашего следующего исследования. //описанное выше - по сути, 2 цикла. Внешний - пока не встретим пробел, внутренний - пока не встретим пробел или аналогичный символ Смотрим на флажок - если повторов не было, аккуратненько по символам перекидываем кусок до пробела в новую строку. Начинаем анализировать исходную строку с запомненного места. я поняла, как нужно действовать в этой задаче, но больше ничего не получается(может опыта не хватает, может и ума...), в общем реализовать не получается. можешь объяснить именно насчет реализации |
мисс_граффити |
![]()
Сообщение
#20
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
написать за тебя код?
нет, не могу. потому что ты даже пробовать не хочешь! я тебе алгоритм подробно расписала. если какие-то моменты неясные - спрашивай. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 17.07.2025 23:38 |