![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Pautina |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: ![]() ![]() ![]() |
По условию задачи надо отсортировать одномерный массив, заданный случайным образом (n=100), а затем исходную и полученную матрицу вывести на форму (процесс сортировки выводится на экран пошагово).
Очень надеюсь на вашу помощь. Подскажите, как, с чего следует начинать.. какой элемент я должна использовать для ввода массива? Заранее большое спасибо! |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата Подскажите, как, с чего следует начинать С поиска по форуму... Сначала надо думать не о том,Цитата какой элемент я должна использовать для ввода массива , а об алгоритме решения задания. И только потом в соответствии с придуманным или найденным алгоритмом на него навешивается интерфейс...Здесь было нечто подобное: Линейная вставка и здесь: Демонстрация бинарной сортировки А вот теперь разбирайся в логике работы, выбирай подходящие компоненты, и пиши программу на Дельфи |
Pautina |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: ![]() ![]() ![]() |
Попыталась написать.. но прога не работает.. посмотрите, пожалуйста..
вывод массива написала в метку. подскажите, как организовать вывод на форму? спасибо! Прикрепленные файлы ![]() |
мисс_граффити |
![]()
Сообщение
#4
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
После исправления самых грубых ошибок:
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.
-------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Pautina |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 40 Пол: Женский Реальное имя: Nataly Репутация: ![]() ![]() ![]() |
Спасибо! только сортировка не работает..
![]() подскажите,пожалуйста, что делать с выводом.. исходная матрица и пошаговая сортировка обязательно должны выводиться на форму! как это можно осуществить? |
klem4 |
![]()
Сообщение
#6
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата //стандартная пузырьковая сортировка. что ты делала - не поняла...
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 i := size - 1 downto 1 do
for j := 0 to i - 1 do
if a[j] < a[j + 1] then begin
//swap
end;
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
мисс_граффити |
![]()
Сообщение
#7
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
klem4, а ты уверен, что она теперь сможет объяснить, зачем нужны проходы в разных направлениях и откуда берутся границы циклов?
по-моему, не всегда нужно гнаться за оптимальностью - сначала объяснить самое простое, школьное. а потом уже при желании совершенствовать. а так можно и поразрядную написать - еще быстрее работать будет. Цитата только сортировка не работает.. (( Правда? ![]() Цитата подскажите,пожалуйста, что делать с выводом.. исходная матрица и пошаговая сортировка обязательно должны выводиться на форму! как это можно осуществить? ну, тут у тебя 2 пути: либо на каждом шаге выводить в новый стринггрид, либо изменять содержимое старого - но тогда придется вставить паузу, иначе человек не успеет ничего воспринять... -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
klem4 |
![]()
Сообщение
#8
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата а ты уверен, что она теперь сможет объяснить ... Просто ты написала Цитата стандартная пузырьковая сортировка Но она ведь выглядит не так как приведенный далее тобой код ? А то человек скажет что вот мол пузырек, а ему в ответ ![]() Если я что-то не так понял, то извиняюсь. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Цитата либо на каждом шаге выводить в новый стринггрид, либо изменять содержимое старого Простите, а вариант с записью в следующую строку StringGrid-а что, уже отменили? ![]() |
мисс_граффити |
![]()
Сообщение
#10
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
Но она ведь выглядит не так как приведенный далее тобой код ? А то человек скажет что вот мол пузырек, а ему в ответ ![]() Если я что-то не так понял, то извиняюсь. Специально посмотрела. ![]() volvo, ой. фигня получилась. я это и хотела сказать.... написала в "новую стринггрида", (пропустив слово "строку"), потом перед отправкой просматривала на наличие опечаток - "исправила" на согласованное предложение. ![]() ![]() -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 7:07 |