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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2009, 17:03   #1
Алексеййй
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 10
Восклицание сортировка строк pascal

Код:
Суть такова: Упорядочить длины строк четверостишия по возрастанию....
program df2;
uses crt;
var
S1,s2,s3,s4:string;
j,n,t,i:integer;
begin
clrscr;
write(s1);
readln(s1);
write(s2);
readln(s2);
write(s3);
readln(s3);
write(s4);
readln(s4);
writeln('dlina 1 stroki=',length(s1),'simvola');
writeln('dlina 2 stroki=',length(s2),'simvola');
writeln('dlina 3 stroki=',length(s3),'simvola');
writeln('dlina 4 stroki=',length(s4),'simvola');
  for i:=n-1 downto 1 do
  for j:=1 to i do
  if s[j]>s[j+1] then
  begin
  t:=s[j];
  s[j]:=s[j+1];
  s[j+1]:=t;
  end;
write;
readln;
            end.
у меня получился полный бред.... Помогите мож по другому можно , или как то так, но не пойму что именно нужно подставлять в сортировке пузырьком и как....

Последний раз редактировалось Алексеййй; 19.04.2009 в 17:08.
Алексеййй вне форума Ответить с цитированием
Старый 19.04.2009, 17:08   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Естественно, будет бред. Вам надо отсортировать строки по их длинам? А вы сортируете саму строку (которой, кстати, вообще нет).
Вам нужно завести массив строк.
Код:
s : array[1..4] of string;
туда загоните строки.
Ну а потом как-нибудь так:
Код:
  for i:=n-1 downto 1 do
  for j:=1 to i do
  if length(s[j])>length(s[j+1]) then
  begin
  t:=s[j];
  s[j]:=s[j+1];
  s[j+1]:=t;
  end;
где t - строковая переменная.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.04.2009, 17:27   #3
Алексеййй
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 10
По умолчанию

Ну вообще мне надо сравнить длины строк и я решил сделать так: сортировать их и между ними поставить " > ". А можно поподробнее ,как мне это сделать? А то я уже столько намучался с этой задачей, все остальные которые сложнее сделал а вот на строки(((
Алексеййй вне форума Ответить с цитированием
Старый 19.04.2009, 17:37   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Алексеййй, а вы сами себе представляете, как можно упорядочить длины строк? Упорядочить можно строки по их длинам, но не сами длины.
Цитата:
А можно поподробнее ,как мне это сделать?
Чем вас не устраивает то, что я написал выше?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.04.2009, 17:47   #5
Алексеййй
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 10
По умолчанию

Сорри ошибся... Да сортировать строки по их длинам..
Я не знаю как загнать длины строк в массив
Алексеййй вне форума Ответить с цитированием
Старый 19.04.2009, 17:48   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Я не знаю как загнать длины строк в массив
Для моего примера в массив нужно загонять строки, а не длины.
Вы хоть смотрите, что я пишу?

Код:
for i:=1 to 4 do
 readln(s[i]);
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.04.2009, 21:15   #7
Алексеййй
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 10
По умолчанию

Ничего у меня не получается(((
Алексеййй вне форума Ответить с цитированием
Старый 19.04.2009, 21:25   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Покажите ваши попытки.

Впрочем, ладно. Держите.
Код:
uses crt;
const n=4;
var
s : array[1..10] of string;
i,j : integer;
t : string;

begin
clrscr;
for i:=1 to n do
 readln(s[i]);

 for i:=n-1 downto 1 do
  for j:=1 to i do
   if length(s[j])>length(s[j+1]) then
    begin
    t:=s[j];
    s[j]:=s[j+1];
    s[j+1]:=t;
    end;

writeln('-----------');
for i:=1 to n do
 writeln(s[i]);

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

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 19.04.2009, 23:03   #9
Алексеййй
Пользователь
 
Регистрация: 19.04.2009
Сообщений: 10
По умолчанию

ОГРОМНОЕ СПАСИБО!!


и последний вопрос : как сделать чтобы вместо самой строки выводился её номер, например StrokaN1, потому что я чет не дописал полностью условие задачи... мне б как нить сделать так чтобы еще можно было вставить между ними >(больше) или если они равно =
т.к. их надо сравнить...

Но Всё равно Спасибо!
Алексеййй вне форума Ответить с цитированием
Старый 19.04.2009, 23:09   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
как сделать чтобы вместо самой строки выводился её номер, например StrokaN1,
То есть номер, под которым она была до сортировки? Ну тогда нужно завести дополнительный массив чисел
Код:
mas : array[1..10] of integer;
затем заполнить его числами по порядку.
Код:
for i:=1 to n do
 mas[i] := i;
и в процессе сортировки строк, когда обмениваете местами строки, заодно проделываете это и с элементами этого массива.
Код:
for i:=n-1 downto 1 do
  for j:=1 to i do
   if length(s[j])>length(s[j+1]) then
    begin
    t:=s[j];
    s[j]:=s[j+1];
    s[j+1]:=t;
    tmp := mas[j];
    mas[j] := mas[j+1];
    mas[j+1] := tmp;
    end;
Цитата:
мне б как нить сделать так чтобы еще можно было вставить между ними >(больше) или если они равно =
т.к. их надо сравнить...
А вот это не понял. Что куда вставить?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка строк матрицы aurora_87 Общие вопросы C/C++ 3 23.04.2009 12:29
Сортировка строк в TStringGrid dimon000 Общие вопросы Delphi 6 03.07.2008 12:59
Сортировка строк sheva75 Microsoft Office Excel 3 06.02.2008 05:00