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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2009, 21:18   #1
Rusl92
Форумчанин
 
Аватар для Rusl92
 
Регистрация: 30.03.2008
Сообщений: 392
Плохо Исправь текст с помощью программы

Здравствуйте, передо мной стоят такие задачи, я делал, но похоже мой подход оказался не совсем правильным и программа исправляла текст некорректно.
1. в строке s:string могут встречаться как 1,2,3,4 пробела между словами
нужно если 1 пробел - то оставить, 2,3,4 - превратить в один пробел
2. если перед точкой есть пробел(ы) - удалить их... если после точки нет пробела - поставить
заранее спасибо
Программирование - это великое искусство... Такое же как например и живопись!
Rusl92 вне форума Ответить с цитированием
Старый 14.01.2009, 22:39   #2
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию вот 1

uses crt;
var
s:string;
i:integer;
begin
clrscr;
write(' -> ');
readln(s);
while pos(' ',s)<>0 do
begin
i:=pos(' ',s);
delete(s,i,3);
end;
while pos(' ',s)<>0 do
begin
i:=pos( ' ',s);
delete(s,i,2);
end;
while pos(' ',s)<>0 do
begin
i:=pos(' ',s);
delete(s,i,1);
end;
writeln(s);
readln;
end.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 14.01.2009, 23:32   #3
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
Подмигивание

Tkirill, твоя программа удаляет все пробелы и еще другие символы
Rusl92, вот моя версия программы, но она удаляет один символ после пробела, может ты найдешь ошибку
Код:
var s,s2:string;
i,k:integer;
begin
readln(s);
repeat
inc(i);
k:=0;
if s[i]=' ' then
 begin inc(k);
 if s[i+1]=' ' then
  begin inc(k);
  if s[i+2]=' ' then
   begin inc(k);
   if s[i+3]=' ' then inc(k);
   end;
  end;
 end;
if s[i-1]=' ' then k:=-1;
if k>0 then s2:=s2+' ';
if k=0 then s2:=s2+s[i];
until i>=length(s);
writeln('________________');
writeln(s2);
readln
end.
pomoshnic вне форума Ответить с цитированием
Старый 14.01.2009, 23:39   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Моя версия ) Потестил - вроде ненужные пробелы удаляет.
Код:
uses crt;
var s : string;
i,k,len,ps : integer;
begin
clrscr;
writeln('Stroka: ');
readln(s);

i:=1;
len := length(s);
while i<len do
  begin
  ps := i-1;
  i := pos(' ',copy(s,i,len));
  if i<>0 then
    begin
    i := i + ps;
    k := 0;
    while s[i+k+1] = ' ' do
      begin
      inc(k);
      end;
    if k>0 then
      begin
      delete(s,i+1,k);
      inc(i);
      end;
    len := length(s);
    end
   else break;

  if keypressed then break;
  end;


writeln('-----');
writeln(s);
readln;
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 14.01.2009, 23:52   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

pomoshnic Модифицировал вашу версию - теперь работает )

Код:
var s,s2:string;
i,k:integer;
begin
readln(s);
i:=0;
repeat
inc(i);
k:=0;
if s[i]=' ' then
 begin
 while s[i+k+1]=' ' do inc(k);
 inc(i,k);
 end;
{if s[i-1]=' ' then   k:=-1;  }
if k>0 then s2:=s2+' ';
if k=0 then s2:=s2+s[i];
until i>=length(s);
writeln('________________');
writeln(s2);
readln
end.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 14.01.2009, 23:53   #6
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию

pomoshnic я тестировал программу, она нормально работает. Я не знаю откуда ты ето взял.
@(o_0)@
Tkirill вне форума Ответить с цитированием
Старый 14.01.2009, 23:58   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Tkirill У меня ваша программа тоже не работает. Пример ввода:
Код:
123   123   123
выводит:
Код:
123123123
Или еще:
Код:
123  123     123
выдает:
Код:
1232323
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 15.01.2009, 00:08   #8
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Вот задача №2:
Код:
var s:string;
i,j:integer;
begin
writeln('Введите текст');
readln(s);
for i:=1 to length(s) do
if s[i]='.' then
begin
j:=i;
dec(j);
while s[j]=' ' do
dec(j);
if j<>i-1 then delete(s,j+1,i-j-1);
end;
for i:=1 to length(s) do
if s[i]='.' then
begin
inc(i);
if s[i]<>' ' then insert(' ',s,i);
end;
writeln('-----------');
writeln(s);
readln
end.
pomoshnic вне форума Ответить с цитированием
Старый 15.01.2009, 00:20   #9
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Tkirill У меня ваша программа тоже не работает.
Вот мой пример ввода:
Ввожу:
Код:
t1    t2 t3
Выводит:
Код:
t1
pomoshnic вне форума Ответить с цитированием
Старый 15.01.2009, 00:24   #10
Tkirill
Форумчанин
 
Аватар для Tkirill
 
Регистрация: 22.12.2008
Сообщений: 104
По умолчанию

а вы в каком паскале делаете?
@(o_0)@
Tkirill вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что означает этот текст программы в Паскале? xxasb07 Помощь студентам 2 09.12.2008 19:19
Быстрый вызов программы с помощью мыши Патрон Win Api 3 17.07.2008 15:40
Открытие файла с помощью моей программы igroman Общие вопросы Delphi 3 09.06.2008 09:12
Проверьте пожалуйста текст программы Dim@ Помощь студентам 1 26.12.2007 19:53
Выбор программы или Открыть с помощью Умелец Свободное общение 7 14.07.2007 21:17