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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2016, 21:35   #1
Moroshka21
 
Регистрация: 10.12.2016
Сообщений: 4
По умолчанию Замена слов аббревиатурами

Нужно заменить все слова 'так как', 'и тому подобное', 'то есть', 'и так далее' их аббревиатурами, вот моя программа, она работает неправильно, исправьте пожалуйста, что в ней не так

Код:
var
  st, st1, st11, st2, st22, st3, st33, st4, st44: string;
  i: byte;

procedure change(i: byte; var s, s1, s2: string);
begin
  i := pos(s1, s);
  delete(s, i, length(s1));
  insert(s2, s, i);
end;

begin
writeln('Введите строку: '); readln(st);
begin
for i:= 1 to length(st)-1 do
  case st of 
    'так как': 
      begin
        st11 := 'т.к.';
        change(i, st, st1, st11);
      end;
    'и тому подобное':
      begin
        st22 := 'и т.п.';
        change(i, st, st2, st22);
      end;
    'то есть':
      begin
        st33 := 'т.е.';
        change(i, st, st3, st33);
      end;
    'и так далее':
      begin
        st44 := 'и т.д.';
        change(i, st, st4, st44);
      end;
  end;
  writeln('Новая строка: ',st); 
end;
end.
Moroshka21 вне форума Ответить с цитированием
Старый 17.12.2016, 23:34   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

В паскале нельзя делать case по строкам.
Просто найди нужное через pos.
Son Of Pain вне форума Ответить с цитированием
Старый 18.12.2016, 11:39   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
var
  st: string;
  i: byte;

procedure change(i: byte; var st: string; sAlt, sNew:string);
begin
  If Copy(st,i,Length(sAlt))<>sAlt then
     Exit;
  delete(st, i, length(sAlt));
  insert(sNew, st, i);
end;

begin
writeln('Введите строку: '); readln(st);
for i:= 1 to length(st)-1 do
begin
  change(i,st,'так как','т.к.');
  change(i,st,'и тому подобное','и т.п.');
  change(i,st,'то есть','т.е.');
  change(i,st,'и так далее','и т.д.');
end;
  writeln('Новая строка: ',st);
end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 20.12.2016, 18:57   #4
Moroshka21
 
Регистрация: 10.12.2016
Сообщений: 4
По умолчанию

Спасибо, а вы не подскажите, как сделать так, чтобы программа учитывала регистр?
Moroshka21 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена слов на С\С++ dark_ast Общие вопросы C/C++ 4 16.12.2015 13:55
Замена слов Sofran Microsoft Office Word 2 03.03.2013 18:45
Замена слов Афанасий[vedma] Visual C++ 0 20.11.2011 10:57
Замена слов Лесная Эльфийка Помощь студентам 35 24.12.2010 16:13
замена слов sergeiqwe PHP 2 05.05.2010 19:29