IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Массивы в Delphi
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 40
Пол: Женский
Реальное имя: Nataly

Репутация: -  0  +


По условию задачи надо отсортировать одномерный массив, заданный случайным образом (n=100), а затем исходную и полученную матрицу вывести на форму (процесс сортировки выводится на экран пошагово).
Очень надеюсь на вашу помощь. Подскажите, как, с чего следует начинать.. какой элемент я должна использовать для ввода массива? Заранее большое спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


После исправления самых грубых ошибок:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label2: TLabel;
StringGrid2: TStringGrid;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
a:array[0..99] of integer; //чтобы нумерация совпала со стринггридовской. и чтобы не вводить 100 чисел!
i:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
for i:=0 to 99 do //меняем счетчики
begin //не забывай про бегин/энд!
a[i]:=random(i);
//a[i]:=StrToInt(StringGrid1.Cells[i,0]); это не нужно - ты же заполнила массив рэндомом!
// А вот вывод пригодился бы. Допишем.
StringGrid1.Cells[i,0]:=IntToStr(a[i]);
end;
end;

//если ввод рэндомом - это вообще не нужно. тем более что ввод в стринггрид у тебя заблокирован.
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
#8,'0'..'9':;
#13:
if StringGrid1.Col<StringGrid1.ColCount-1 then
StringGrid1.Col:=StringGrid1.Col+1;
else key:=chr(0);
end;
end;



procedure TForm1.Button3Click(Sender: TObject);
const
size=100;
var
//a:array[1..size] of integer; это еще что такое?
// у нас есть глобальная переменная с тем же именем. вот с ней и работаем, раз объявили.
j,buf,i,k:integer;

begin
//for i:=1 to size do
//a[i]:=StrToInt(StringGrid1.Cells[i-1,0]) ; уже все давно заполнено. не повторяемся.
//стандартная пузырьковая сортировка. что ты делала - не поняла...
for i:=0 to size-1 do //с нуля
for j:=0 to size-2 do
if a[j]<a[j+1] then
begin //тут он нужнее, чем там, куда ты поставила.
buf:=a[j];
a[j]:=a[j+1];
a[j+1]:=buf;
end;
for k:=0 to size-1 do //интересно, а зачем тебе для этого цикла отдельная переменная к?
// Label2.Caption:=Label2.Caption+''+IntToStr(a[k]); вот изврат... может, все же в стринггрид?
//Label2.caption:=Label2.Caption+#13;
StringGrid2.Cells[k,0]:=IntToStr(a[k]);
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;
end.



--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 6:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name