Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi]Быстрая сортировка(сортировка Хоара), Сортировка массивов в StringGrid 
V
    Опции темы
NaG1
  Дата 24.6.2011, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



Всем здраствуйте
у меня возникла серьезная проблема с кодом:

вот часть кода, где сейчас у меня выбиваются ошибки:

Код

unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, Grids, StdCtrls, Buttons;

type
  TForm3 = class(TForm)
    strngrd2: TStringGrid;
    BitBtn1: TBitBtn;
    btn1: TBitBtn;
    edt1: TEdit;
    edt2: TEdit;
    procedure BitBtn1Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form3: TForm3;
   min,z,c:integer;
   e, d, i, Nmin, j, k: byte;
implementation

uses
  Unit1, Unit2;

{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
close;
end;


procedure TForm3.btn1Click(Sender: TObject);
const b = strtoint(edt1.Text);{пока проблема в этой строке}
var
A:array[1..b] of integer;
begin
c:=strtoint(edt2.Text);
z:=1;
with Form1 do
begin
for i:=1 to Strngrd1.ColCount do
    for j:=1 to Strngrd1.RowCount do
      if TryStrToInt(Strngrd1.Cells[i, j], z) then
        a[i]:=StrToInt(Strngrd1.Cells[i,1]);
for i:=1 to b do
        a[i]:=StrToInt(Strngrd1.Cells[i,1]);
for i:=1 to b do
        Strngrd2.Cells[i,0]:=IntToStr(i);
for i:=1 to b-1 do
        Strngrd2.Cells[0,i]:=IntToStr(i);
        {Çäåñü ñîðòèðîâêà}
for i:=1 to b-1 do
        begin
                min:=a[i];     
                Nmin:=i;
                for j:=i+1 to b do
                        begin
                                if a[j]<min then
                                        begin
                                                min:=a[j]; 
                                                Nmin:=j;     
                                                a[Nmin]:=a[i];
                                                a[i]:=min;
                                        end;
                        for k:=1 to b do
                                Strngrd2.Cells[k,i]:=IntToStr(a[k]);
                        end;
        end;
end;
for i:=1 to b do
Strngrd2.Cells[i,1]:=IntToStr(a[i]);
end;

end.


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

Тему создал в Делфи для новичков, но так как никто не ответил, то создал ее в тут.

Помогите с кодом пожалуйста! А то на допиливание программы осталось 2 дня и защита..... smile 

исходник программы:

Это сообщение отредактировал(а) NaG1 - 24.6.2011, 22:30

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  program.zip 20,43 Kb
PM MAIL   Вверх
NaG1
Дата 24.6.2011, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



Keeper89
Это как ты так в константу решил значение из Эдита загнать?

Добавлено @ 22:07
Если хочется сделать массив определенной размерности - либо используй динамические, либо ставь b=10, а итерации делай уже по какой-нибудь n<10.


я знаю что не правильно, но все дело в том что плз сам вводит размерность массива, а если указывать
Код

A:array of integer;


вместо
Код

A:array[1..b] of integer;


все время ошибку выдает при сортировке.

А с динамическими я не очень дружу, т.к. раньше необходимости в них у меня никогда не было, и в их записи не очень разбираюсь.

Это сообщение отредактировал(а) NaG1 - 24.6.2011, 22:41
PM MAIL   Вверх
NaG1
Дата 25.6.2011, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 21.4.2011

Репутация: нет
Всего: нет



Язык написания - Delphi(Ведь только там есть StringGrid,?)

небольшое изменение в коде от ошибок не спасло
Код

procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form3: TForm3;
   min,z,c:integer;
   e, d, i, Nmin, j, k: byte;
   b:Integer;
implementation

uses
  Unit1, Unit2;

{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);
begin
close;
end;


procedure TForm3.btn1Click(Sender: TObject);
var
A:array of integer;
begin
c:=strtoint(edt2.Text);
b:=strtoint(edt1.Text);
z:=1;
SetLength(A, b);
with Form1 do
begin
for i:=0 to Strngrd1.ColCount do
    for j:=0 to Strngrd1.RowCount do
      if TryStrToInt(Strngrd1.Cells[i, j], z) then
        a[i]:=StrToInt(Strngrd1.Cells[i,1]);
for i:=0 to b do
        a[i]:=StrToInt(Strngrd1.Cells[i,1]);
for i:=0 to b do
        Strngrd2.Cells[i,0]:=IntToStr(i);
for i:=0 to b-1 do
        Strngrd2.Cells[0,i]:=IntToStr(i);
        {Çäåñü ñîðòèðîâêà}
for i:=0 to b-1 do
        begin
                min:=a[i];     
                Nmin:=i;
                for j:=i+1 to b do
                        begin
                                if a[j]<min then
                                        begin
                                                min:=a[j]; 
                                                Nmin:=j;     
                                                a[Nmin]:=a[i];
                                                a[i]:=min;
                                        end;
                        for k:=0 to b do
                                Strngrd2.Cells[k,i]:=IntToStr(a[k]);
                        end;
        end;
end;
with Form1 do
for i:=0 to b do
Strngrd1.Cells[i,1]:=IntToStr(a[i]);
end;

end.

user posted image
user posted image


PM MAIL   Вверх
Wedafl
Дата 13.7.2011, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 12.5.2008
Где: Москва

Репутация: нет
Всего: нет



Нормальный пример того как оно должно быть.

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  MatrixEditor.rar 7,16 Kb
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.