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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2015, 23:59   #1
Magenta
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 14
По умолчанию Pascal, работа со строками

Уважаемые форумчане, просьба помочь с написанием кода.
Вот задание:

Сделал это задание с циклом While и всё было бы хорошо, если не условия для выполнения работы:

Вот мой код программы:
Код:
Program Lab;
 Uses
  Crt;
 Var
    s,st,z,z1:string;
    b1,b2,b3,b4:integer;
    k:byte;
  Begin
    Clrscr;
    write('Введите строку из 12 символов: ');
    readln(s);
    write('Введите строку из трёх символов: ');
    readln(z);
    z1:=copy(z,3,1)+copy(z,2,1)+copy(z,1,1);
          b1:=Pos(z,s);
          Delete(s,b1,3);
          Insert(z1,s,b1);
          writeln(s);
          writeln(b1);
          inc(k);
             b1:=Pos(z,s);
             Delete(s,b1,3);
             Insert(z1,s,b1);
             writeln(s);
             writeln(b1);
             inc(k);
                b1:=Pos(z,s);
                Delete(s,b1,3);
                Insert(z1,s,b1);
                writeln(s);
                writeln(b1);
                inc(k);
                   b1:=Pos(z,s);
                   Delete(s,b1,3);
                   Insert(z1,s,b1);
                   writeln(s);
                   writeln(b1);
                   inc(k);
          writeln('Количество вхождений в строку = ',k);
    readln;
 end.
Т.к. я совсем начинающий, просьба помочь.

Последний раз редактировалось Magenta; 26.03.2015 в 00:04.
Magenta вне форума Ответить с цитированием
Старый 26.03.2015, 14:16   #2
Magenta
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 14
По умолчанию

Выручайте!!!
Magenta вне форума Ответить с цитированием
Старый 26.03.2015, 14:56   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
s:=StringReplace(s,'123','321',rfReplaceAll);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.03.2015, 17:35   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Аватар
Ее нет в классике.
Цитата:
Выручайте!!!
Если так извращаться то наверное:
Код:
var s:string[12],s2:string[3];
 cnt,i:integer;
begin
 Вводим строки;
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 write(cnt,' раз'); readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.03.2015, 19:40   #5
Magenta
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ее нет в классике.

Если так извращаться то наверное:
Код:
var s:string[12],s2:string[3];
 cnt,i:integer;
begin
 Вводим строки;
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 i:=pos(s2,s); delete(s,i,3); cnt:=cnt+byte(i<>0);
 write(cnt,' раз'); readln;
end.
Не работает
Magenta вне форума Ответить с цитированием
Старый 26.03.2015, 19:49   #6
Magenta
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 14
По умолчанию

Точнее работает, но нужно ещё менять следование символов на обратный
Magenta вне форума Ответить с цитированием
Старый 26.03.2015, 20:01   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var c:char;
...
... c:=s[i]; s[i]:=s[i+2];s[i+2]:=c;
Вместо delete. Устраивает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.03.2015, 20:11   #8
Magenta
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
var c:char;
...
... c:=s[i]; s[i]:=s[i+2];s[i+2]:=c;
Вместо delete. Устраивает?




Да и если ввести все единицы, он будет считать всего 4 вхождения

Последний раз редактировалось Stilet; 26.03.2015 в 20:34.
Magenta вне форума Ответить с цитированием
Старый 26.03.2015, 20:35   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри внимательнее что я написал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.03.2015, 20:43   #10
Magenta
Пользователь
 
Регистрация: 25.03.2015
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Смотри внимательнее что я написал.
Можешь написать код, если не трудно.
Если вместо delete вставлять, он ошибку выдаёт
Magenta вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками Pascal ksenija15reg Помощь студентам 3 28.11.2013 23:25
работа со строками (Pascal) Вероника_94 Помощь студентам 2 25.01.2012 23:39
Pascal. Работа со строками. lisenog Помощь студентам 1 16.12.2010 15:56
Работа со строками. Pascal zevs116 Помощь студентам 1 19.11.2010 20:54
Работа со строками (pascal) Marlin Помощь студентам 7 03.06.2010 14:11