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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2009, 22:34   #11
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

А с сортировками не поможете??????????
Мне нужны 2 самые простые программы "Обменной сортировки простой выборкой" и "Сортировки простыми вставками".
просто чтоб выводил изночальный массив , отсортированный и кол-во перестановок.
Mariya2009 вне форума Ответить с цитированием
Старый 13.06.2009, 22:43   #12
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

погоди, там ещё маленькая ошибочка была. после
Код:
else //удоляем где-то в середине
    prev^.link := curr^.link;
добавь
Код:
if prev^.link = nil then p := prev;
Без этого не добавлялся новый элемент, если удалённый был последним в списке
По поводу сортировок, пиши что есть, если не будет получатся, подправим. Почитать про алгоритмы можешь тут
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 13.06.2009, 22:50   #13
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

Спасибо за помощь
Mariya2009 вне форума Ответить с цитированием
Старый 13.06.2009, 23:30   #14
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

По поводу "Обменной сортировки простой выборкой":
на форме 2 кнопки(Вывести и Сортировать), выводить выводит в 1-ый лабел а сортировать отказывается, ошибку пишет где-то в середине
Mariya2009 вне форума Ответить с цитированием
Старый 13.06.2009, 23:32   #15
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

Вот полный код
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure vivod(var a:array of integer);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a:array[1..10] of integer;

implementation

{$R *.dfm}

procedure TForm1.vivod(var a:array of integer);
var i:byte;
begin
label2.Caption:='';
for i:=0 to 9 do
label2.Caption:=label2.Caption+#13+ inttostr(a[i]);
showmessage('');
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
begin
label1.Caption:='';
for i:=1 to 10 do
label1.Caption:=label1.Caption+#13+ inttostr(a[i]);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
a[1]:=717;
a[2]:=473;
a[3]:=313;
a[4]:=160;
a[5]:=949;
a[6]:=764;
a[7]:=34;
a[8]:=467;
a[9]:=757;
a[10]:=800;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var x,i,j,m,N:integer;
begin
for i:=1 to N-1 do //перебор элементов выходного множества
// входное множество - [i:N]; выходное - [1:i-1]
begin
m:=i;
for j:=i+1 to N do// поиск минимума во входном множестве
if(a[j]<a[m]) then m:=j;
//обмен 1-го элемента вх.множества с минимальным
if i<>m then begin
x:=a[i];
a[i]:=a[m];
a[m]:=x;
end;
end;
end;


end.
Mariya2009 вне форума Ответить с цитированием
Старый 13.06.2009, 23:36   #16
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Первое что бросается в глаза, то что в Button2Click не задано начальное значение N
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 13.06.2009, 23:47   #17
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

label2.Caption:='';
for i:=1 to 10 do
label2.Caption:=label2.Caption+#13+ inttostr(a[i]);
end;

вывожу отсортированный массив во второй лабел а он не отсартированый, а если вывожу a[m], то вообще вылетает
Mariya2009 вне форума Ответить с цитированием
Старый 13.06.2009, 23:57   #18
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

procedure TForm1.Button3Click(Sender: TObject);
var i,m:integer;
begin
label2.Caption:='';
for i:=0 to 9 do
label2.Caption:=label2.Caption+#13+ inttostr(a[i]);
end;

Зделала вот так вывод отсортированного массива, но все равно не то, подскажите пожалуйста где ошибка в самой сортировке(она из учебника), или в выводе?
Mariya2009 вне форума Ответить с цитированием
Старый 14.06.2009, 00:01   #19
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Вот всё работает. Отличается от самого первого варианта только тем, что указано начальное значение N и вызвана процедура vivod, про которую вы благополучно забыли
Код:
procedure TForm1.vivod(var a:array of integer);
var i:byte;
begin
label2.Caption:='';
for i:=0 to 9 do
label2.Caption:=label2.Caption+#13+ inttostr(a[i]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:byte;
begin
label1.Caption:='';
for i:=1 to 10 do
label1.Caption:=label1.Caption+#13+ inttostr(a[i]);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
a[1]:=717;
a[2]:=473;
a[3]:=313;
a[4]:=160;
a[5]:=949;
a[6]:=764;
a[7]:=34;
a[8]:=467;
a[9]:=757;
a[10]:=800;
end;

procedure TForm1.Button2Click(Sender: TObject);
Var x,i,j,m,N:integer;
begin
N := 10;
for i:=1 to N-1 do //перебор элементов выходного множества
// входное множество - [i:N]; выходное - [1:i-1]
  begin
  m:=i;
  for j:=i+1 to N do// поиск минимума во входном множестве
    if(a[j]<a[m]) then m:=j;
    //обмен 1-го элемента вх.множества с минимальным
    if i<>m then begin
      x:=a[i];
      a[i]:=a[m];
      a[m]:=x;
      end;
  end;
vivod(a);
end;
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 14.06.2009, 01:31   #20
Mariya2009
Пользователь
 
Регистрация: 13.06.2009
Сообщений: 26
По умолчанию

а как еще посчитать кол-во перестановок и кол-во проходов сортировки, у меня показывает номера элементов которые переставлялись.
И как поднять вам репутацию?
Mariya2009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите со списками в Delphi arm777 Помощь студентам 2 09.06.2009 13:54
помогите с работой с односвязными списками Паскаль neon0858 Помощь студентам 2 18.05.2009 22:00
Помогите пожалуйста со списками... Horknee Паскаль, Turbo Pascal, PascalABC.NET 10 22.12.2008 16:21
Работа со списками. radist Паскаль, Turbo Pascal, PascalABC.NET 4 07.05.2007 00:05