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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2011, 11:30   #1
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию Преобразование строк

Преобразовать строку таким образом, чтобы после каждого заданного символа sym1 был вставлен символ sym2, если sym2 не следует за sym1 в исходной строке.
(Составить программу для решения задачи таким образом, чтобы решение каждой подзадачи описывалось подпрограммой. Библиотечные функции для работы со строками не использовать.)

Код:
const n=10;
var s:string[n];
    sym1,sym2:char;
    i:byte;
begin
sym1:='a';
sym2:='b';
for i:=1 to n do
readln(s[i]);
for i:=1 to length(s) do
if s[i]=sym1 then s[i+1]:=sym2;
for i:=1 to n do
write(s[i]);
readln;
end.
Что-то не так делаю...)
swillrocker вне форума Ответить с цитированием
Старый 25.05.2011, 11:57   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Код:
if (s[i]=sym1 AND s[i+1]<>sym2) then s[i+1]:=sym2;
Как-то так, наверное...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 25.05.2011, 12:38   #3
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
Код:
if (s[i]=sym1 AND s[i+1]<>sym2) then s[i+1]:=sym2;
Как-то так, наверное...
Error 41: Operand types do not match operator.

Да и по сути нужно вставить sym2 между sym1 и следующим символом.
А это действие заменяет )
swillrocker вне форума Ответить с цитированием
Старый 25.05.2011, 12:50   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
if (s[i]=sym1) AND (s[i+1]<>sym2) then s[i+1]:=sym2;
Попробуй так
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 25.05.2011, 13:03   #5
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Код:
if (s[i]=sym1) AND (s[i+1]<>sym2) then s[i+1]:=sym2;
Попробуй так
Если бы требовалась замена символа, следующего за sym1, символом sym2, то это бы хорошо подошло. Но проблема в том, что нужно вставить этот символ не "стирая" уже имеющиеся. М.б. сместить строку как-нибудь...
Например строка: asdasdasd(при sym1=a sym2=b) должна иметь вид absdabsdabsd

Последний раз редактировалось swillrocker; 25.05.2011 в 13:05.
swillrocker вне форума Ответить с цитированием
Старый 25.05.2011, 14:09   #6
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от swillrocker Посмотреть сообщение
Если бы требовалась замена символа, следующего за sym1, символом sym2, то это бы хорошо подошло. Но проблема в том, что нужно вставить этот символ не "стирая" уже имеющиеся. М.б. сместить строку как-нибудь...
Например строка: asdasdasd(при sym1=a sym2=b) должна иметь вид absdabsdabsd
Объяви второй массив и пиши в него в цикле.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 25.05.2011, 15:47   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну или просто наполняй пустую строку символами вместо массива (что по сути одно и тоже).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 25.05.2011, 20:08   #8
swillrocker
Пользователь
 
Регистрация: 04.05.2011
Сообщений: 44
По умолчанию

Вот, даже в двух вариантах.

I.
Код:
var
   n,i: integer;
   sym1,sym2,ch: char;
   s: string;
begin
  write('Enter number of symbols: ');
  readln(n);
  write('Enter first symbol(sym1): ');
  readln(sym1);
  write('Enter second symbol(sym2): ');
  readln(sym2);
  writeln('Enter string: ');
  s:='';
   for i:=1 to n do
     begin
       readln(ch);
       s:=s+ch;
     if (ch=sym1) then
         s:=s+sym2;
     end;
writeln(s);
readln;
end.
II.
Код:
Var
 l,n:string;
 i,j:byte;
 c,s:char;
begin
write('Введите строку: ');
readln(l);
write('Введите символ за которым вставить: ');
readln(c);
write('Введите символ который вставляется: ');
readln(s);
 for i:= Byte(l[0])-1 downto 1 do
  if (l[i]=c) and (l[i+1]<>s) then
  begin
   n:=l[Byte(l[0])];
   for j:= Byte(l[0]) downto i+1 do
    l[j+1]:=l[j];
   l[i+1]:=s;
   l:=l+n;
  end;
if l[Byte(l[0])]=c then l:=l+s;
write(l);
end.
swillrocker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование строк swillrocker Помощь студентам 0 22.05.2011 20:24
Преобразование строк tools Общие вопросы C/C++ 1 27.12.2010 14:55
преобразование строк imperceptible4462 Помощь студентам 14 07.09.2010 06:50
преобразование строк euhenia Помощь студентам 0 21.11.2009 20:19
преобразование строк при критериям Volodymyr Microsoft Office Excel 17 21.04.2009 11:50