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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2013, 20:27   #1
SnS
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 37
По умолчанию строки.

помогите пожалуйста разобраться с задачей:. Задан текст, содержащий скобки. Поменять местами первое и последнее слово заключенное в скобки.
SnS вне форума Ответить с цитированием
Старый 12.02.2013, 20:28   #2
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
помогите пожалуйста разобраться с задачей
Как помочь? Написать всё за Вас, причем за "спасибо"(которого возможно и не будет)?
Poma][a вне форума Ответить с цитированием
Старый 12.02.2013, 20:32   #3
SnS
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 37
По умолчанию

нет, я просто хочу разобраться:
Program a4;
var st,st1,a,b:string;
i,k,n1,n2,t1,t2:integer;
begin
writeln(' text');
readln(st);
k:=length(st);

for i:=1 to k do
begin
if st[i]='(' then n1:=i;
if st[i]=')' then n2:=i;
end;
for i:=1 to k do
begin
if st[k-i]=' ' then t1:=k-i;
if st[i]=' ' then t2:=i;
end;

вот здесь у меня тупик, у меня не получаестя записать функции для работы со строками:
st:=copy(st,n1+1,t1-n1-1);
delete(st,n1+1,t1-n1-1);
insert(st,st1,t2+1);
SnS вне форума Ответить с цитированием
Старый 12.02.2013, 20:42   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
нет, я просто хочу разобраться:
С этого и нужно было начинать

Т.к. функция Pos проигрывает в эффективности самописной, но в настоящее время шарманки выполняют апупенное кол-во операций, то на это O(n*32) вместо О(n) совершенно по барабану, то можно использовать Pos.

Можно было делать и так как Вы. Но в чем Ваш косяк?
Цитата:
Код:
for i:=1 to k do
begin
if st[i]='(' then n1:=i;
if st[i]=')' then n2:=i;
end;
В том что Вы получаете последние скобки.. Но где же Вы возьмете первые скобки?
=> n1 := Pos ('(', s); n2 := Pos (')', s).
Теперь надо найти последние скобки.. Давайте пойдем Вашим способом с конца не самым эффективным алгоритмом :
Код:
i := Length(s);
while s[i] <> '(' do 
    Dec (i);

n3 := i;

i := Length(s);
while s[i] <> ')' do
    Dec (i);

n4 := i;
Теперь уже вставляем..
Poma][a вне форума Ответить с цитированием
Старый 12.02.2013, 20:49   #5
SnS
Пользователь
 
Регистрация: 09.12.2012
Сообщений: 37
По умолчанию

спасибо, вроде поняла
SnS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Программа на языке "Ассемблер" - ввод строки, анализ длины строки, добавление точки в конец строки Алексей_2012 Помощь студентам 1 05.04.2012 11:26
Сделать в гриде строки выше, чтобы не растягивать строки до бесконечности kris__tina БД в Delphi 1 09.06.2011 15:31
Создание пустой строки и копирование в неё содержимое предыдущей строки Gvaridos Microsoft Office Excel 2 29.10.2010 13:33
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10