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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 14:18   #1
csdan1el
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию string в паскале ( расставить 8 слов в алфавитном порядке)

задача: из 8 слов найти самое короткое, если их несколько - вывести в алфавитном порядке

я нашел количество знаков в самом коротком слове, а все слова, которые длиннее приравнял к '' ( сделал "пустыми")
как теперь расставить оставшиеся слова в алфавитном порядке (пусть сначала идут эти самые пустышки, а потом собственно искомые слова в алфавитном порядке)
чтобы все было миловидно, пожалуй, к словам, которые нужно будет выводить добавлю в конце запятую и пробел, а к "пустым" не буду, таким образом визуально их все равно не будет видно..

если есть принципиально другие методы хотелось бы услышать (можно и без кодов)
вопрос пока только в том, как в алфавитном порядке расположить слова
csdan1el вне форума Ответить с цитированием
Старый 19.12.2010, 14:34   #2
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

На вскидку - можно закинуть слова из строки в массив (смотри примеры на форуме, или сделай сам), а затем сортируй по ascii кодам первых символов слов
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 19.12.2010, 14:53   #3
csdan1el
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию

да, у меня каждое слово - отдельный элемент массива с[i]

не могу цикл придумать, чтобы он их быстро расставил как надо
с двумя-тремя словами я бы еще перебором решил, но 8 - слишком много вариантов
csdan1el вне форума Ответить с цитированием
Старый 19.12.2010, 15:21   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так а в чем проблема? Сортировку пузырьком по строкам еще никто не отменял. Она прекрасно работает и со строками.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2010, 15:41   #5
csdan1el
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию

проблема в том, что я паскаль тока недавно начал учить и об "обменной сортировке (метод пузырька)" не слышал до этого момента (только что прочел в инете че эт такое..)
что ж спасибо, Stilet, дальше разберусь сам)

а то я уже хотел с помощью рандомных чисел решать, надеясь, что они когда нибудь станут так, чтобы условие остановило цикл генерации случайных номеров элементов массива (что в принципе может и не произойти никогда), а этот метод попроще будет))

Последний раз редактировалось csdan1el; 19.12.2010 в 15:44.
csdan1el вне форума Ответить с цитированием
Старый 19.12.2010, 15:54   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Смотри, у нас на форуме примеры сортировки текста выкладывались.
Да вот хотя бы:http://www.programmersforum.ru/showthread.php?t=67590
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2010, 16:36   #7
csdan1el
Новичок
Джуниор
 
Регистрация: 19.12.2010
Сообщений: 4
По умолчанию

мой первоначальный вариант (может подумаю на досуге, как упростить), но идея в общем понятна, да и на работоспособность не жалуюсь

Код:
program p1;
type a=array [1..8] of string;
b=array [1..8] of integer;
var i,u,m:integer;
w:string;
c:a;
n:b;
begin
writeln ('vvedite 8 slov');
for i:=1 to 8 do begin
                 readln (c[i]);
                 n[i]:=length (c[i]);
                 end;
m:=256;
for i:=1 to 7 do begin
                 if n[i]<n[i+1] then
                                if n[i]<m then m:=n[i];
                 end;
if n[8]<m then m:=n[8];
for i:=1 to 8 do if n[i]=m then c[i]:=concat(c[i],' ') else c[i]:='';
for u:=1 to 7 do
              for i:=1 to 7 do
                            if c[i+1]<c[i] then begin
                                                w:=c[i];
                                                c[i]:=c[i+1];
                                                c[i+1]:=w;
                                                end;
for i:=1 to 8 do write (c[i]);
readln;
end.
итог - выдает самые короткие слова в алфавитном порядке, через пробел..


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 19.12.2010 в 19:55.
csdan1el вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод слов в алфавитном порядке. strem92 Фриланс 9 20.04.2010 22:10
Составить в алфавитном порядке список всех слов, встречающихся в тексте, и количество этих слов. KAPAHDAW Паскаль, Turbo Pascal, PascalABC.NET 2 17.02.2009 01:19
Дан файл, содержащий текст на русском языке.Составить в алфавитном порядке список слов в файл. JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2008 12:05