2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Задача со строками
Сообщение19.06.2009, 18:11 


19/06/09
4
Помогите пожалуйста решить задачу на Pascal :?: :

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

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 18:21 
Заслуженный участник


11/05/08
32166
Код:
i:=1;
while i<=length(s) do begin
  if (i+1<=length(s)) and (s[i+1]=s[i]) and (s[i+1]<>' ')
    then Delete(s, i+1, 1)
    else inc(i);
end;

Ну что-то типа так. Наверное, можно и оптимизировать, но лень.

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 18:30 
Заслуженный участник


27/04/09
28128
Dezmondoff, значит, вы плохо знаете Pascal, раз решения не видно сразу. И, кстати, условие довольно размыто - не ясно, первой буквы чего - каждого слова или первого.

Кстати говоря, Delete - мееедленная процедура. Если позволяет память, лучше использовать вторую строку.

Ещё одна неоднозначность - удалять ли ппппервую букву или пепрпвуюп букву?

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 18:36 


19/06/09
4
arseniiv в сообщении #223378 писал(а):
Dezmondoff, значит, вы плохо знаете Pascal, раз решения не видно сразу.

Да Pascal знаю плохо!
arseniiv в сообщении #223378 писал(а):
И, кстати, условие довольно размыто - не ясно, первой буквы чего - каждого слова или первого.

Не там в условии написано "каждое слово в строке, удалив из него все последующие вхождения первой буквы

-- Пт июн 19, 2009 19:37:14 --

за помощь спасибо

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 18:47 
Заслуженный участник


11/05/08
32166
О да, я чего-то не вчитался. Если первая буква каждого слова, то маленько сложнее. Примерно так.

Код:
firstsym:=s[1];
i:=2;
while i<=length(s) do begin
  if (s[i-1]=' ') and (s[i]<>' ') {начало слова} then begin
    firstsym:=s[i];    continue;    end;
  if (s[i]=firstsym) and (s[i]<>' ')   then Delete(s, i, 1)   else inc(i);
end;

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 18:56 
Заслуженный участник


27/04/09
28128
Лучше не такой цикл делать, а конечный автомат. Нагляднее и удобнее, ИМХО.

P.S. Когда нет опыта - лучше получать его, а получить его ни чем, кроме своего труда, не получится. Надо написать и проверить, исправить и проверить, и т. д., и всё будет лучше, чем было...

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 18:57 


19/06/09
4
Спасибо ewert

-- Пт июн 19, 2009 20:17:20 --

firstsym:=s[i]; continue; end;
Единственно, что вот в это месте возникает зацикливание!

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 19:38 
Заслуженный участник


11/05/08
32166
Dezmondoff в сообщении #223385 писал(а):
firstsym:=s[i]; continue; end;
Единственно, что вот в это месте возникает зацикливание!

Вот это уж точно, я уж и сам заметил, надо перед "continue;" вставить "inc(i);".

 Профиль  
                  
 
 Re: Задача со строками
Сообщение19.06.2009, 19:59 


19/06/09
4
Всё работает спасибо большое!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group