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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2012, 13:48   #1
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию Ввести строковую последовательность из 12-ти или меньшего количества элементов

Ввести строковую последовательность из 12-ти или меньшего количества элементов, и,
если в строке есть символ '+', то перед этим знаком и после него прибавить пробела.

Цитата:
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
a:string;
i:byte;
begin

Writeln('========================== ====');
Writeln('Enter the string sequence of 12 or fewer elements,');
Writeln('and If the line is the '+' sign before it and after it to add a space.');
Writeln('========================== ====');
Writeln;

Write('Enter the sting of 12 characters of fewer: ');
readln(a);

for i:=0 to length(a) do

if a[i]='+' then
insert(' ',a,i);
insert(' ',a,i+1);

Writeln;
Writeln('Rezultat:');
Writeln(a);
Writeln;
Writeln('to exit press enter...');
readln;

end.
то что получилось, работает не так как нужно
помогите пожалуйста...
Mixasnt вне форума Ответить с цитированием
Старый 10.11.2012, 14:06   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,378
По умолчанию

Код:
for i:=0 to length(a) do

if a[i]='+' then
insert(' ',a,i);
insert(' ',a,i+1);
Вероятно, имелось ввиду:
Код:
for i:=0 to length(a) do
   if (a[i]='+') then
   begin
        insert(' ',a,i);
        insert(' ',a,i+2); {на i+1 позиции уже '+'}
   end;

И как, ... ?
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 10.11.2012, 14:11   #3
Mixasnt
Пользователь
 
Регистрация: 07.10.2012
Сообщений: 54
По умолчанию Решение задачи:

Вот что в итоге получилось,и работает:

Цитата:
program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
a:string;

begin

Writeln('========================== ====');
Writeln('Enter the string sequence of 12 or fewer elements,');
Writeln('and If the line is the '+' sign before it and after it to add a space.');
Writeln('========================== ====');
Writeln;
Write('Enter the sting of 12 characters of fewer: ');
readln(a);

a := StringReplace(a, '+', ' + ', [rfReplaceAll]);

Writeln;
Writeln('Rezultat:');
Writeln(a);
Writeln;
Writeln('to exit press enter...');
readln;

end.
Mixasnt вне форума Ответить с цитированием
Старый 10.11.2012, 14:32   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,378
По умолчанию

Я тут немного посрамился ...
Для решения в том -же стиле:
Код:
i := 1;
while i <= length(a) do
begin
   if (a[i]='+') then
   begin
      insert(' + ',a,i); {вставим сразу всю подстроку}
      i := i + 2;         {все же 2 для следующего символа после вставки?}
   end;
   i:= i+1; {или inc(i)}
end;
Так понятнее. Надо изменить значение переменной цикла, поскольку после вставки символ '+' продвигается вперед.

Как-то так ...
Как-то так, ...

Последний раз редактировалось ViktorR; 10.11.2012 в 14:35.
ViktorR вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ввести последовательность символов [ Senya Black ] Помощь студентам 1 08.05.2012 19:11
Ввести последовательность строк. Подсчитать количество совпадающих строк. на языке SHELL lj23lj Фриланс 1 30.03.2012 16:41
Ввести строку символов,в которой задана последовательность целых чисел (возможно со знаком), разделенных killoff1234 Помощь студентам 0 16.05.2010 18:37
Транслит графической информации в числовую или строковую? KALISNIK Помощь студентам 0 20.03.2010 21:31
Ввести одномерный массив, состоящий из 10 элементов zergon Помощь студентам 3 24.12.2009 21:34