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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.04.2010, 20:44   #1
Тигран001
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 34
По умолчанию алгоритмы упорядочивания

Упорядочить по возрастанию массив действительных чисел a1, ..aN, используя алгоритм сортировки обменами - II.
пожалуйста напишите програмку на паскале, тема алгоритмы упорядочивания, очень надо
Тигран001 вне форума Ответить с цитированием
Старый 15.04.2010, 00:57   #2
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

Вот полностью готовая задача. Делает сортировку методом пузырька...
На лекции ходи братан все будет понятно.....
Я тоже такой же студент как и ты 1 курс программист...


Код:
Program SORTIROVKA_MASSIVA;
 const n=10;
 var
  mas: array[1..n] of integer;
  pr,i,j:integer;
  
 begin
  For i:= 1 to n do
   Readln(mas[i]);
  For j:=1 to n do 
  For i:= 1 to n-1 do
   If mas[i]>mas[i+1] then
    begin
	 pr:=mas[i+1];
	 mas[i+1]:=mas[i];
	 mas[i]:=pr;
	end;

  For i:= 1 to n do
   Writeln (mas[i]);
 end.
xakkkkker вне форума Ответить с цитированием
Старый 15.04.2010, 06:03   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Код:
Program SORTIROVKA_MASSIVA;
 const n=10;
 var
  mas: array[1..n] of integer;
  pr,i,j:integer;
  
 begin
  For i:= 1 to n do
   Readln(mas[i]);
  For j:=1 to n do 
  For i:= 1 to n-1 do
   If mas[i]>mas[i+1] then
    begin
	 pr:=mas[i+1];
	 mas[i+1]:=mas[i];
	 mas[i]:=pr;
	end;

  For i:= 1 to n do
   Writeln (mas[i]);
 end.
Ты в этом уверен?
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 15.04.2010, 07:32   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Ты в этом уверен?
А что тебя тут смутило?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2010, 07:47   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цикл по J...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 15.04.2010, 08:04   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да нормально все...
Для сортировки этого типа нужно как раз два цикла...
http://www.delphiworld.narod.ru/base...thod_sort.html
Единственное к чему можно придраться так это к mas[i]>mas[i+1]
Тут по хорошему как раз нужно J тот самый использовать а не i+1
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2010, 08:30   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Вот обычная сортировка "пузырьком"...
Код:
              //сортировка массива окладов компаний
              for ims:=0 to cntKladcomp-1 do
                for jms:=ims+1 to cntKladcomp-1 do
                  if msKladcomp[ims]>msKladcomp[jms]then
                    begin                      
                      msX:=msKladcomp[ims];
                      msKladcomp[ims]:=msKladcomp[jms];
                      msKladcomp[jms]:=msX
                    end;
Это рабочий код из программы...

Вот я и не уверен, что его сортировка будет работать правильно...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 15.04.2010, 09:10   #8
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

я проверял программа работала... а цикл по моему тоже правильно составил. Нам на лекции так объясняли
xakkkkker вне форума Ответить с цитированием
Старый 15.04.2010, 13:55   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Grag
Это рабочий код из программы...
Grag, Вы уж простите меня, зануду.. Но либо это нерабочий (не совсем корректный) код, либо размер массива msKladcomp задан так, что там есть "хитрые" "лишние" элементы...

поясню свою мысль примером кода (заметьте, что Ваш код сортировки скопирован "буква в букву"! даже отступы оставил Ваши ):
Код:
const
  cntKladcomp = 5;
var
  ims, jms, msX : integer;
  msKladcomp : array[0..cntKladcomp] of integer;
begin
  for ims:=0 to cntKladcomp do msKladcomp[ims] := 10 - ims;

  { ввывод массива }
  WriteLn('Исходный массив: ');
  for ims:=0 to cntKladcomp do Write(msKladcomp[ims]:4);
  WriteLn;

              
              {сортировка массива окладов компаний}
              for ims:=0 to cntKladcomp-1 do
                for jms:=ims+1 to cntKladcomp-1 do
                  if msKladcomp[ims]>msKladcomp[jms]then
                    begin
                      msX:=msKladcomp[ims];
                      msKladcomp[ims]:=msKladcomp[jms];
                      msKladcomp[jms]:=msX
                    end;

  { ввывод массива }
  WriteLn('После сортировки массив: ');
  for ims:=0 to cntKladcomp do Write(msKladcomp[ims]:4);
  WriteLn;

end.

p.s.
собственно претензия к строчке:
for ims:=0 to cntKladcomp-1 do
имхо, должно быть
for ims:=0 to cntKladcomp-2 do

Последний раз редактировалось Serge_Bliznykov; 15.04.2010 в 13:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.04.2010, 15:53   #10
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Большое спасибо, замечание верное, как то не обратил внимание на это.
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритмы Levhik Общие вопросы Delphi 7 14.01.2009 17:38
алгоритмы 2д фигур tarakannn Общие вопросы C/C++ 2 23.11.2008 11:23