Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: PASСAL
 
 автор: Akira   (21.01.2005 в 15:06)   письмо автору
 
 

Please Help me =)
Нужна программа на Турбо Паскале ;)
Удаление из строки всех лишних пробелов...
Кто сможет помочь?

   
 
 автор: cheops   (21.01.2005 в 21:50)   письмо автору
 
   для: Akira   (21.01.2005 в 15:06)
 

/*Мучительно вспоминая в каком углу валяется справочник по Pascal*/ Не очень понятно какие пробелы считать лишние, если два пробела подряд идут или с начала строки и с конца?

   
 
 автор: Akira   (21.01.2005 в 22:37)   письмо автору
 
   для: cheops   (21.01.2005 в 21:50)
 

Пример:
Удалить все пробелы в начале и в конце. И между словами.:
" мама мыла раму мылом "
Надо убрать лишние пробелы. Оставить по одному между словами. Ну как функция trim().
Мне надо срочно. Завтра сдавать эту работу, она у меня зачетная =/

   
 
 автор: cheops   (22.01.2005 в 00:35)   письмо автору
 
   для: Akira   (21.01.2005 в 22:37)
 

Ёклмн, я в такие дебри залез своих коробок с книгами, чтобы добыть Pascal и диски с оным... если ещё не спите - сейчас накатаю...

   
 
 автор: cheops   (22.01.2005 в 00:46)   письмо автору
 
   для: Akira   (21.01.2005 в 22:37)
 

program pro288;
Uses Crt;
Var
   j :Integer;
   flag :Boolean;
   StrText, NewText :String;
Begin
   StrText := '   This    is  a   wrong   ...   ';
   Writeln(StrText);
   // Вырезаем пробельные символы с начала
   For j:=1 to Length(StrText) do
   Begin
     if Ord(StrText[j]) > 32 Then Break;
   End;
   StrText := Copy(StrText,j,Length(StrText) - j + 1);
   // Вырезаем пробельные символы с конца
   For j:= Length(StrText) downto 1 do
   Begin
     if Ord(StrText[j]) > 32 Then Break;
   End;
   StrText := Copy(StrText, 1, j + 1);
   // Вырезаем пробельные символы между слов
   // помещаем новую строку в NewText
   flag := true;
   For j:=1 to Length(StrText) do
   Begin
     if (Ord(StrText[j]) < 33) Then
     Begin
       if flag Then
       Begin
         NewText := NewText + StrText[j];
         flag := false;
       End;
     End
     Else
     Begin
      NewText := NewText + StrText[j];
      flag := true;
     End;
   End;
   Writeln(NewText);
End.

   
 
 автор: Akira   (22.01.2005 в 01:11)   письмо автору
 
   для: cheops   (22.01.2005 в 00:46)
 

Волшебно =) Я бесконечно благодарен =D Теперь осталось убедить , что это я написал =))
А код надеюсь рабочий ;)

   
 
 автор: cheops   (22.01.2005 в 01:37)   письмо автору
 
   для: Akira   (22.01.2005 в 01:11)
 

:))) проверьте, правда я перед помещением его сюда заменил все i на j - руки никак не доходят по-нормальному замену тэгов [ i] в форуме сделать... если нигде i на j заменить не забыл должно работать :)))

   
 
 автор: cheops   (22.01.2005 в 01:40)   письмо автору
 
   для: Akira   (22.01.2005 в 01:11)
 

Ну эта... комментарии, конечно, не // а {}... я их уж потом в Far выставлял - руки сами набили :)))

   
 
 автор: Akira   (22.01.2005 в 01:46)   письмо автору
 
   для: cheops   (22.01.2005 в 01:40)
 

i или j не важно =) Я правда сам еще постораюсь =) Алгоритм я знаю , но вот синтаксис =( На меня еще большая часть группы расчитывает...Эх а завтра еще микроэлектронику сдовать =((

   
 
 автор: cheops   (22.01.2005 в 01:50)   письмо автору
 
   для: Akira   (22.01.2005 в 01:46)
 

Вообще Pascal штука хорошая, к порядку приучает :)))

   
 
 автор: Akira   (22.01.2005 в 02:19)   письмо автору
 
   для: cheops   (22.01.2005 в 01:50)
 

НЕ хочу его учить =Р Он старый =) меня к порядку Юникс приучит =)

   
 
 автор: cheops   (22.01.2005 в 02:27)   письмо автору
 
   для: Akira   (22.01.2005 в 02:19)
 

UNIX-у недавно 35 лет стукнуло :))) он ещё старше :)))

   
 
 автор: Akira   (22.01.2005 в 18:03)   письмо автору
 
   для: cheops   (22.01.2005 в 02:27)
 

Поздравления принемаю сдал микроэлектронику на 4 =) А вот языки нет =)
В том коде было пару ошибок, но не это главное =)
Я оказываеться забыл добавить что надо по мимо символов нужно еще и точки с запятыми =) Но я просто решил добавить в if
еще код "." и "," Ну =) Спасибо в общем =)

   
 
 автор: Кузнецов М.В.   (22.01.2005 в 02:23)   письмо автору
 
   для: Akira   (22.01.2005 в 01:46)
 

>Эх а завтра еще микроэлектронику сдовать =((
Удачи :)

   
 
 автор: chairday   (12.10.2005 в 01:45)   письмо автору
 
   для: Akira   (21.01.2005 в 15:06)
 

Вот на всякий случай мой вариант решения проблемы:

Program two_1;
var st: string; z,i: integer;
Begin
writeln('vvedite stroku');
readln(st);
z:= length(st);
for i:=1 to z-1 do                          {Удаление пробелов между словами}
    begin
    if (st[i]=' ') and (st[i+1]=' ') then
    begin delete(st,i,1); i:=i-1 end;
    end;
if st[1]=' ' then delete(st,1,1);           {Удаление пробела в начале}
if st[z]=' ' then delete(st,z,1);           {Удаление пробела в конце}
    writeln(st);
end.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования