Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 25.12.2011, 15:18   #1 (permalink)
Katerina Voy
Member
 
Регистрация: 19.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Arrow Отсортировать числа

подскажите как можно отсортировать одномерный массив к примеру по возрастанию чисел??
Katerina Voy вне форума   Ответить с цитированием

Старый 25.12.2011, 15:18
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Возможно вы не обращали внимания, но на нашем форуме так же есть аналогичные темы

Даны три вещественных числа...
Паскаль. Сумма цифр числа
Паскаль. Обработка натурального числа
Помогите отсортировать. Записи
Умножение длинного числа на короткое (Турбо Паскаль).

Старый 25.12.2011, 18:46   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Katerina Voy Посмотреть сообщение
подскажите как можно отсортировать одномерный массив к примеру по возрастанию чисел??
По-разному. Я, например, чаще всего использую "метод пузырька". Показать?
Vladimir_S вне форума   Ответить с цитированием
Старый 25.12.2011, 19:10   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Ну ладно, не дождавшись ответа - вот, нарисовал в качестве примера:
Код:
CONST
 N=10;
VAR
 T:Array[1..10] of Byte;
 i,j,d:Byte;
BEGIN
 Randomize;
 For i:=1 to N do T[i]:=Random(N);
 Writeln('Initial array:');
 For i:=1 to N do Write(T[i]:2);
 Writeln;
 Writeln;
 For i:=1 to N-1 do
  For j:=1 to N-i do
   If T[j]>T[j+1] then
    begin
     d:=T[j];
     T[j]:=T[j+1];
     T[j+1]:=d;
    end;
 Writeln('Ordered array:');
 For i:=1 to N do Write(T[i]:2);
 Readln;
END.
Vladimir_S вне форума   Ответить с цитированием
Старый 25.12.2011, 19:48   #4 (permalink)
Katerina Voy
Member
 
Регистрация: 19.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Vladimir_S, спасибо большое))
у меня получилось так:
Цитата:
uses crt;
const n=4; m=9;
var a:array [1..n,1..m] of byte;
i,j,d:Byte;
begin
for i:=1 to n do
begin
for j:=1 to m do
a[i,j]:=random(100); end;
for i:=1 to n do
begin for j:=1 to m do
write(' ',a[i,j],' ');
writeln; end;
for i:=1 to m-1 do
for j:=1 to m-i do
if a[1,j]>a[1,j+1] then
begin
d:=a[1,j];
a[1,j]:=a[1,j+1];
a[1,j+1]:=d;
end;
writeln('Ordered array:');
for i:=1 to m do write(a[1,i]:2,' ');
readln;
end.
Katerina Voy вне форума   Ответить с цитированием
Старый 25.12.2011, 19:51   #5 (permalink)
Katerina Voy
Member
 
Регистрация: 19.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

это был код, а не цитата ><
Katerina Voy вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 25.12.2011, 20:06   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Katerina Voy Посмотреть сообщение
это был код, а не цитата ><
А задача-то какая? Упорядочить только первую строку?
И, кстати - зачем там CRT присоединен, если ни одной CRT-шной команды не используется?
Vladimir_S вне форума   Ответить с цитированием
Старый 25.12.2011, 20:20   #7 (permalink)
Katerina Voy
Member
 
Регистрация: 19.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
А задача-то какая? Упорядочить только первую строку?
И, кстати - зачем там CRT присоединен, если ни одной CRT-шной команды не используется?
Да, это та задача) crt - из-за того, что pascal abc)
Katerina Voy вне форума   Ответить с цитированием
Старый 25.12.2011, 20:25   #8 (permalink)
Katerina Voy
Member
 
Регистрация: 19.12.2011
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

что-то я совсем запуталась :/

Код:
uses crt;
const n=4; m=9;
type mass=array [1..n,1..m] of integer;

procedure vvod(var a:mass; f:text);
var i,j:byte;
begin
for i:=1 to n do begin
for j:=1 to m do
read(a[i,j]);
end;
for i:=1 to n do begin
for j:=1 to m do
write(f,a[i,j],' ');
writeln;
end;
end;

procedure ordering(var a:mass);
 var i,j,d:byte;
 begin
   for i:=1 to m-1 do
  for j:=1 to m-i do
   if a[1,j]>a[1,j+1] then
     begin
       d:=a[1,j];
         a[1,j]:=a[1,j+1];
          a[1,j+1]:=d;
          end;
         end;


var a:mass;
    i,j,d:Byte;
    f:text;
begin
 assign(f,'in.txt');
 reset(f);
 vvod(a,f);
 close(f);
     assign(f,'in.txt');
        rewrite(f);
        ordering(a);
        writeln('Ordered array:');
       for i:=1 to m do write(a[1,i]:2,' ');
   readln;

     close(f);
     end.
Katerina Voy вне форума   Ответить с цитированием
Старый 25.12.2011, 20:51   #9 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 15,797
Записей в дневнике: 71
Сказал(а) спасибо: 166
Поблагодарили 203 раз(а) в 86 сообщениях
Репутация: 75760
По умолчанию

Версия Pascal тут не при чем, все дело в привычке цеплять crt везде, где он нужен и не нужен, так уж их научили .
AlexZir вне форума   Ответить с цитированием
Старый 25.12.2011, 20:55   #10 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Katerina Voy Посмотреть сообщение
что-то я совсем запуталась :/
Посмотрите такой вариант. Исправил несколько ошибок, "причесал", вставил экранные подсказки (не люблю "слепого" ввода):
Код:
uses crt;
const n=4; m=9;
type mass=array [1..n,1..m] of integer;

var a:mass;
    f:text;

procedure vvod(var b:mass);
var i,j:byte;
begin
 for i:=1 to n do
  for j:=1 to m do
   begin
    write('a[',i,',',j,']= ');
    readln(b[i,j]);
   end;
 for i:=1 to n do
  begin
   for j:=1 to m do
    write(f,b[i,j]:4);
   writeln(f);
  end;
end;

procedure ordering(var b:mass);
 var i,j,d:byte;
 begin
   for i:=1 to m-1 do
    for j:=1 to m-i do
     if b[1,j]>b[1,j+1] then
      begin
       d:=b[1,j];
       b[1,j]:=b[1,j+1];
       b[1,j+1]:=d;
      end;
   for i:=1 to m do write(f,b[1,i]:4);
 end;


begin
 assign(f,'in.txt');
 rewrite(f);
 vvod(a);
 close(f);
 assign(f,'out.txt');
 rewrite(f);
 ordering(a);
 close(f);
end.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 02:39.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.