IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Обработка символьных и строковых данных
annna
сообщение 26.05.2004 19:44
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 19

Репутация: -  0  +


Дано несколько слов, в каждом из которых от одной до семи строчных букв, между соседними словами - не менее одного пробела, за последним словом точка. Напечатать слова в алфавитном порядке.
Заранее спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 27.05.2004 11:59
Сообщение #2


Гость






Вроде это уже где-то было...
Код

Var
 Words:Array[1..100] Of String[7];
 Count:Integer;
 min,s:String;
 i,j,k:Integer;

Begin
 ReadLn(s);
 i:=1;
 While i<=Length(s) Do
 Begin
   While (i<=Length(s)) And (s[i]=' ') Do
     Inc(i);
   If i>Length(s) Then
     Break;
   j:=i+1;
   While (j<=Length(s)) And (s[j]=' ') Do
     Inc(j);
   Inc(Count);
   Words[Count]:=Copy(s,i,j-i)
 End;
 For i:=1 To Count-1 Do
 Begin
   k:=i;
   min:=s[i];
   For j:=i+1 To Count Do
     If Words[j]<min Then
     Begin
       k:=j;
       min:=Words[j]
     End;
   If k<>i Then
   Begin
     s[k]:=s[i];
     s[i]:=min
   End
 End;
 For i:=1 To Count Do
   WriteLn(s[i])
End.
 К началу страницы 
+ Ответить 
APAL
сообщение 27.05.2004 14:36
Сообщение #3


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Немного опоздал... smile.gif но вот и мое решение:

Код
Const
 src : String = '  вот тестовая строка которая содержит несколько слов.  ';
Var
 m           : array [1..30] of Byte;
 index,i,j,t : Byte;
Begin
 Index:=0;
 If src[1]<>' ' then
 Begin
   Inc(Index);
   m[Index]:=1;
 End;
 For i:=2 to Length(src) do
   If (src[i]<>' ') and (src[i-1]=' ') then
   Begin
     Inc(Index);
     m[Index]:=i;
   End;
 For j:=1 to Index-1 do
   For i:=j+1
    to Index do
   If src[m[i]]<src[m[j]] then
   Begin
     t:=m[i];
     m[i]:=m[j];
     m[j]:=t;
   End;
 For i:=1 to Index do
 Begin
   j:=0;
   While (src[m[i]+j]<>' ') and (src[m[i]+j]<>'.') do
   Begin
     Write(src[m[i]+j]);
     Inc(j);
   End;
   Writeln;
 End;
End.


Сообщение отредактировано: APAL - 27.05.2004 15:02


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 27.05.2004 14:59
Сообщение #4


Гость






Я думаю, что лучше взять вариант APAL'а, т. к. он хоть и сложнее для объяснения, но скорее всего отлажен.
 К началу страницы 
+ Ответить 
APAL
сообщение 27.05.2004 15:02
Сообщение #5


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


Да, я его проверял. Потому и запоздал - ловил баги и тестировал... smile.gif


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 27.05.2004 15:06
Сообщение #6


Гость






А я предложил метод "тупо в лоб". Разбываю на слова, сортирую и вывожу. Возможны только опискиsmile.gif
 К началу страницы 
+ Ответить 
APAL
сообщение 27.05.2004 15:21
Сообщение #7


Смотрю...
*****

Группа: Модераторы
Сообщений: 1 055
Пол: Мужской
Реальное имя: Пшеничный Алексей Анатольевич

Репутация: -  6  +


А я сортировал просто индексы первых букв слов... :D


--------------------
Если что-то не делает того, что вы запланировали ему делать - это еще не означает, что оно бесполезно.
--------------------
Прежде, чем задать вопрос - Правила :: FAQ :: Поиск
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
annna
сообщение 27.05.2004 15:22
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 19

Репутация: -  0  +


BlackShadow
APAL
Tnx ;)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 27.05.2004 15:26
Сообщение #9


Гость






Всегда пожалуйста smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.06.2025 18:21
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"