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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2008, 14:55   #1
Андрю)(@
Пользователь
 
Регистрация: 07.11.2008
Сообщений: 23
По умолчанию несколько пробелов заменить одним пробелом

Плиз... Помогите доделать прогу на Паскале
Дана последовательность символов S1, ... , S25, среди которых есть пробелы. Заменить каждую группу пробелов одним пробелом.
Смысл такой что выводится строка , содержащая 25 символов, между этими символами встречаются пробелы, если в каком-то месте пробелов встречается больше одного эта группа пробелов должна замениться одним пробелом.

var f:boolean;
s,t:string;
i:integer;
begin
f:=false;
t:='';
for i:=1 to 25 do
if(s[i]=' ')then
begin
if f=false then
begin
t:=t+' ';
f:=true;
end;
end
else
begin
t:=t+s[i];
f:=false;
end;
end.

Символы должны вводится с клавиатуры
надо сделать, чтобы было имеенно 25 символов не более и не менее, т.е. после того как будет введено 25 символов появлялась новая исправленная строка
Андрю)(@ вне форума Ответить с цитированием
Старый 08.11.2008, 15:23   #2
|{ot
Форумчанин
 
Аватар для |{ot
 
Регистрация: 09.03.2008
Сообщений: 127
По умолчанию

программа у Вас рабочая, только добавте ввод строки s(в начале) и вивод t(в конце программы),а что бы в строке s местилось только 25 символов замените s,t:string; на s,t:string[25]; (в кавычках принудительно указывается максимальный размер строки, по умолчанию он равен 255)
|{ot вне форума Ответить с цитированием
Старый 08.11.2008, 16:25   #3
Андрю)(@
Пользователь
 
Регистрация: 07.11.2008
Сообщений: 23
По умолчанию

var f:boolean;
s,t:string[25];
i:integer;
begin
f:=false;
t:='';
for i:=1 to 25 do
read(s[i]);
if(s[i])='' then
begin
if f=false then
begin
t:=t+' ';
f:=true;
end;
end
else
begin
t:=t+s[i];
f:=false;
write(t);
end;
end.
Так тоже ограничение не работает, и что-то ничего путного не выводит..
Может быть можно её как-то переделать
Андрю)(@ вне форума Ответить с цитированием
Старый 08.11.2008, 16:39   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Тебе же сказали, введи строку в начале программы, а то где ты пробелы удаляешь, на экране что ли.
puporev вне форума Ответить с цитированием
Старый 10.11.2008, 14:56   #5
GaJIbI4
Пользователь
 
Регистрация: 03.10.2008
Сообщений: 77
По умолчанию

У меня такая же задачка была мне вот такое решение предложили:
Код:
var
  st: string;
begin
  write('stroka = ');
  readln(st);
  while pos('  ', st) > 0 do delete(st, pos('  ', st), 1);
  write('otvet = ', st);
  readln
end.
GaJIbI4 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BETWEEN и LIKE одним запросом Pinya SQL, базы данных 9 19.08.2008 11:30
соеденить одним кабелем компьютер и ноутбук ERASERROR Свободное общение 3 09.02.2008 23:03
Вход под одним пользователем Mihael Безопасность, Шифрование 3 21.11.2007 12:14
Проблемы с одним клиентом и множеством серверов Maxxon Работа с сетью в Delphi 5 28.08.2007 17:27