Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2010, 09:36   #1
Kris92
Пользователь
 
Аватар для Kris92
 
Регистрация: 05.07.2010
Сообщений: 15
По умолчанию Pascal - строки

помогите задачку решить(((
дана строка, содержащая латинские буквы. заменить все вхождения 'ph' на ' f ', а все вхождения 'ed' на 'ing' .
Kris92 вне форума Ответить с цитированием
Старый 06.07.2010, 10:05   #2
VektorAB
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 29
По умолчанию

Код:
uses crt;
var
str:string;
i:integer;
begin
clrscr;
str:='philips komphort texned';
for i:=1 to length(str)-1 do
         if (str[i]='p') and (str[i+1]='h') then
              begin
                   Delete(str,i,2);
                   Insert('f',str,i)
              end
         else
             if (str[i]='e') and (str[i+1]='d') then
              begin
                   Delete(str,i,2);
                   Insert('ing',str,i)
              end;
Write(Str);
readkey
end.
Вот код. Проверяйте.
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
VektorAB вне форума Ответить с цитированием
Старый 06.07.2010, 10:16   #3
profu
 
Регистрация: 10.06.2010
Сообщений: 3
По умолчанию

Код:
program prog2;
uses crt;
var
 s: string;
 f: boolean;
 index: byte;
begin
 clrscr;
 write('Stroka: ');
 readln(s);
 f:=true;
 while f do
 begin
  f:=false;
  index:=pos('ph', s);
  if index<>0 then
   begin
     f:=true;
     delete(s, index, 2);
     insert('f', s, index);
   end;
  index:=pos('ed', s);
  if index<>0 then
   begin
     f:=true;
     delete(s, index, 2);
     insert('ing', s, index);
   end;
 end;
 writeln('Stroka posle izmeneniya: ', s);
 readln;
end.
profu вне форума Ответить с цитированием
Старый 06.07.2010, 18:34   #4
Kris92
Пользователь
 
Аватар для Kris92
 
Регистрация: 05.07.2010
Сообщений: 15
Печаль помогите((

В строке имеется символ точка с запятой. подсчитать колличество символов до точки с запятой и после неё.
Kris92 вне форума Ответить с цитированием
Старый 06.07.2010, 18:42   #5
VektorAB
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Kris92 Посмотреть сообщение
В строке имеется символ точка с запятой. подсчитать колличество символов до точки с запятой и после неё.
А если точка с запятой встречается не один раз? Как поступать?
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
VektorAB вне форума Ответить с цитированием
Старый 06.07.2010, 18:42   #6
VektorAB
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 29
По умолчанию

Код:
uses crt;
var
posT,doT:integer;
str:string;
begin
clrscr;
Write('Введите строку: ');
Readln(str);
doT:=0;
repeat
doT:=doT+1
until str[doT]=';';
doT:=doT-1;
posT:=length(str)-1-doT;
Writeln('Символов до точки с запятой',doT);
Write('Символов после точки с запятой',posT);
readkey
end.
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"

Последний раз редактировалось VektorAB; 06.07.2010 в 18:52.
VektorAB вне форума Ответить с цитированием
Старый 06.07.2010, 19:25   #7
Kris92
Пользователь
 
Аватар для Kris92
 
Регистрация: 05.07.2010
Сообщений: 15
Радость

блин,почему ошибку выдаёт?((((

Последний раз редактировалось Kris92; 07.07.2010 в 08:14.
Kris92 вне форума Ответить с цитированием
Старый 07.07.2010, 10:05   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Потому что не проверяется выход за пределы строки:
Код:
repeat
doT:=doT+1
until (str[doT]=';')or(dot>=length(str));
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.07.2010, 20:29   #9
VektorAB
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 29
По умолчанию

Не стал крайние варианты брать!
"Сегодня, в завтрашний день не все могут смотреть, вернее не только лишь все, мало кто может это сделать"
VektorAB вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строки Pascal Vaserman Помощь студентам 3 01.06.2010 15:49
Строки. Pascal Feran Помощь студентам 1 05.04.2010 11:06
Pascal Строки SVadiks Помощь студентам 2 18.02.2010 23:56
Pascal.Строки blondinochka Помощь студентам 3 04.06.2009 16:44
Pascal. Строки cudalover Помощь студентам 2 11.04.2009 15:34