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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 21:09   #1
Sanyok1993
 
Регистрация: 24.03.2011
Сообщений: 5
По умолчанию алфавит

Ввести строку символов. Упорядочить слова в строке по алфавиту. Количество пробелов произвольная.

Код:
uses crt;
  var txt,a,d,b:string;
  i,o,z:integer;
  begin
clrscr;
writeln('txt=');
readln(txt);
i:=length(txt);
d:='';
for o:=1 to i do
begin
 a:=copy(txt,o,1);
if a<>'' then d:=d+a;
как зделать что б слова упорядковувало по алфавиту?

writeln('txt=',txt);
readln;
end;
end.
помогите пожалуста очень нада

Последний раз редактировалось Stilet; 30.03.2011 в 07:59.
Sanyok1993 вне форума Ответить с цитированием
Старый 29.03.2011, 21:17   #2
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию

402142430 напиши
Sauber вне форума Ответить с цитированием
Старый 29.03.2011, 21:24   #3
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Код:
uses crt;
var
  b:array[1..100]of string;
  a,t:string;
  i,l,j:integer;
begin
read(a);
i:=1;
l:=0;
while (i <= length(a)) do
begin
     while ((a[i]=' ')and(i <= length(a)))do
         inc(i);
     inc(l);
     b[l]:='';
     while ((a[i]<>' ')and(i <= length(a)))do
     begin
          b[l]:=b[l]+a[i];
          inc(i);
     end;
end;
if a[length(a)]=' ' then dec(l);
for i:=1 to l - 1 do
   for j:=i+1 to l do
       if b[i] > b[j] then
       begin
            t:=b[i];
            b[i]:=b[j];
            b[j]:=t;
       end;
for i:=1 to l do
write(b[i],' ');
end.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 29.03.2011, 21:27   #4
WebbMan
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 168
По умолчанию

можешь каждой букве присвоить число... эмм в русском же алфавите 33 буквы?... после чего пропустить все числа через < или > ... потом всё получившееся: 6 7 4 7 33 5 7 перевести в буквы...

Последний раз редактировалось WebbMan; 29.03.2011 в 21:31. Причина: орфография...
WebbMan вне форума Ответить с цитированием
Старый 29.03.2011, 21:49   #5
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию

боюсь, что со множествами будет гораздо проще, ибо там уже сортируется по алфавиту автоматом
Sauber вне форума Ответить с цитированием
Старый 29.03.2011, 22:09   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

простите, может я что-то сейчас тяжелое для восприятия скажу, но s1 > s2 когда посимвольно первая строка имеет бОльшие номера букв, чем вторая, см справку или мануал
ну, на крайний случай есть comparestr, comparetext
phomm вне форума Ответить с цитированием
Старый 29.03.2011, 22:21   #7
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию

Извините, не увидел что нужно отсортировать слова в строке

Последний раз редактировалось Sauber; 29.03.2011 в 22:23. Причина: правка
Sauber вне форума Ответить с цитированием
Старый 29.03.2011, 22:22   #8
Sanyok1993
 
Регистрация: 24.03.2011
Сообщений: 5
По умолчанию

Код:
while (i <= length(a)) do
begin
     while ((a[i]=' ')and(i <= length(a)))do
         inc(i);
     inc(l);
     b[l]:='';
     while ((a[i]<>' ')and(i <= length(a)))do
     begin
          b[l]:=b[l]+a[i];
          inc(i);
     end;
можете ету часть обьяснить a[i]-что ето?и b[l]?

Последний раз редактировалось Stilet; 30.03.2011 в 07:59.
Sanyok1993 вне форума Ответить с цитированием
Старый 30.03.2011, 07:21   #9
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

строку а, разделяю на слова и загоняю эти слова в масив слов b, затем сортирую массив. l - это количество найденных слов.
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 30.03.2011, 17:44   #10
Акоб
Форумчанин
 
Регистрация: 10.01.2011
Сообщений: 243
По умолчанию

Почему не через пузырьковую сортировку?
Код:
uses crt;
var a,j:integer; txt,restxt:string; t:boolean; N:char;
begin
read(txt);
a := 1;
for j := 1 to  length(txt) do
    if txt[j] <> ' ' then
    begin
            restxt[a] := txt[j]; inc(a);
    end;
t := true;
while t = true do
begin
     t := false;
     for j := 1 to a do
     begin
          if restxt[j] > restxt[j + 1] then
          begin
               N := restxt[j];
               restxt[j] := restxt[j + 1];
               restxt[j + 1] := N;
               t := true;
          end;
     end;
end;
for j := 1 to a do
write(restxt[j]);
end.

Последний раз редактировалось Акоб; 30.03.2011 в 17:47.
Акоб вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклический алфавит (c++) nd0ut Помощь студентам 0 17.02.2011 12:07
Алфавит. the_deer_one Общие вопросы C/C++ 2 13.09.2010 14:53
Алфавит blok20 Помощь студентам 0 17.04.2010 20:55
Алфавит Mikimaus Общие вопросы C/C++ 7 17.11.2009 19:15
Национальный алфавит Bagirli Общие вопросы Delphi 5 30.03.2008 01:44