Форум программистов, компьютерный форум, киберфорум
Наши страницы

Free Pascal

Войти
Регистрация
Восстановить пароль
 
Bringoff
СуперМодулятор
133 / 132 / 15
Регистрация: 03.11.2012
Сообщений: 974
#1

Заменить строку на массив символов - Free Pascal

17.01.2013, 23:45. Просмотров 674. Ответов 4
Метки нет (Все метки)

Заданные две строки текста одинаковой длины, состоящие из маленьких и больших букв латинского алфавита. Нужно проверить образовано ли вторую строчку путем циклического сдвига первой строки. Если это так, то вывести минимально возможный размер сдвига или -1 в противном случае.* Циклически сдвинуть строку на одну букву справа означает переместить позицию каждой буквы этой строки, кроме последней справа, а значение последней буквы поместить на начало слова. (Если слово «aaabb» сдвинуть на 1 позицию вправо, то получим «baaab»). Аналогичным образом, но в обратную сторону выполняется циклический сдвиг строки слева. (Смещение слова «ebcdaaa» на 2 позиции влево даст «cdaaaeb»).Входные данные: На вход подается два текстовых строки одинаковой длины. Длина строки не превышает 1000 символов.Исходные данные: Необходимо вывести длину минимального сдвига, или число -1, если вторая строка не цикличен смещением первой строки
Примеры
abcde deabc -> 2
aaab aaab -> 0
aab abc-> -1
У меня не проходит 3 теста, говорит: "Неправильный ответ". Потому как не хватает места в строке. Может кто-нибудь заменить в моей реализации строки на массивы символов?
Код:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var
  a, b, temp: string;
  ch: char;
  i, right, left, result: integer;
 
begin
  Readln(a);Readln(b);
  if a = b then 
  begin
    Write(0); halt;
  end;
  temp := a;
  for i := 1 to length(a) do
  begin
    if a = b then begin a := temp; break; end;
    ch := a[1];
    delete(a, 1, 1);
    a := a + ch;
    inc(left);
  end;
  for i := 1 to length(a) do
  begin
    if a = b then begin a := temp; break; end;
    ch := a[length(a)];
    delete(a, length(a), 1);
    a := ch + a;
    inc(right);
  end;
  if left > right then result := right else
    result := left;
  if (left = length(a)) or (right = length(a)) then 
    result := -1;
  Write(result); 
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 23:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Заменить строку на массив символов (Free Pascal):

Создайте из четных символов строки st1 строку str2 и из нечетных символов строку str3 - Pascal
Помогите пожалуйста))

Разобрать строку символов на массив слов - Pascal
разобрать строку символов на массив слов(255 символов и 128 слов)

Как записать строку длиннее 255 символов в массив? - Pascal
Я понимаю, что надо посимвольно копировать каждую введённую букву в массив, но как выделять эти символы если вводится одна строка...

Заменить все вхождения строки s2 в исходную строку s1 на строку s3 - Free Pascal
даны три символьных строки s1 s2 s3. заменить все вхождения строки s2 в исходную строку s1 на строку s3. спасибо

ввести строку длиной 70 символов, а в другую строку перенести все слова из этой строки, которые имеют удвоение букв. - Pascal
помогите сделать .!!!!! нужно ввести строку длиной 70 символов, а в другую строку перенести все слова из этой строки, которые имеют...

Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2 последних символов строки S2. - Pascal
1. Даны два числа: N1 и N2, и две строки: S1 и S2. Получить из этих строк новую строку, объединив N1 первых символов строки S1 и N2...

4
orange_rush
140 / 146 / 30
Регистрация: 15.11.2012
Сообщений: 528
Записей в блоге: 2
19.01.2013, 12:31 #2
незнаю, у меня работает хорошо, всё правильно
0
Bringoff
СуперМодулятор
133 / 132 / 15
Регистрация: 03.11.2012
Сообщений: 974
19.01.2013, 15:40  [ТС] #3
Где работает? У меня ограничение в 1000 символов. На 200 все тоже работает.
0
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
25522 / 17075 / 5411
Регистрация: 22.10.2011
Сообщений: 30,234
Записей в блоге: 6
19.01.2013, 18:19 #4
Izobara, строки читаются из файла при прохождении тестов?

Тогда замени string на AnsiString, эта строка не имеет ограничения в 255 символов. Или добавь первой строкой {$H+}, что заставит компилятор FPC трактовать string как AnsiString, и результат будет тот же, что и в первом случае...
1
Bringoff
СуперМодулятор
133 / 132 / 15
Регистрация: 03.11.2012
Сообщений: 974
19.01.2013, 18:22  [ТС] #5
Цитата Сообщение от UI Посмотреть сообщение
Izobara, строки читаются из файла при прохождении тестов?

Тогда замени string на AnsiString, эта строка не имеет ограничения в 255 символов. Или добавь первой строкой {$H+}, что заставит компилятор FPC трактовать string как AnsiString, и результат будет тот же, что и в первом случае...
Спасибо! Заработало.
Я почему-то всегда думал, что AnsiString только в Delphi появился. Буду теперь знать.
0
19.01.2013, 18:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2013, 18:22
Привет! Вот еще темы с ответами:

Найти порядковый номер максимального элемента и записать его в первую строку файла, во 2-ю строку сам массив - Pascal
var f, r: file of char; c: char; i, n,k: integer; max:char; x: array of char; begin assign(f,...

Заменить в строке C группу символов A на B - Pascal
Помогите составить блок-схему по данному заданию: Есть строка C её вводит человек (ограничений по символам нет) Есть строка A её вводит...

ЗАМЕНИТЬ СТРОКУ - Pascal
В текстовом файле найти слово и заменить строку с этим словом на 9(девятки). текст из файла.слово вводит пользователь. не могу ничего...

Заменить все буквы a на q в строке из 25 символов - Pascal
Срочно нужна помощь, не допускают до сессии!!! Нужно написать программу: 1. Заменить все буквы a на q в строке из 25 символов.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru