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

> ВНИМАНИЕ!

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

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

 
 Ответить  Открыть новую тему 
> Массивы в Delphi
сообщение
Сообщение #1


Новичок
*

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

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


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


Гость






Цитата
Подскажите, как, с чего следует начинать
С поиска по форуму... Сначала надо думать не о том,
Цитата
какой элемент я должна использовать для ввода массива
, а об алгоритме решения задания. И только потом в соответствии с придуманным или найденным алгоритмом на него навешивается интерфейс...

Здесь было нечто подобное: Линейная вставка
и здесь: Демонстрация бинарной сортировки

А вот теперь разбирайся в логике работы, выбирай подходящие компоненты, и пиши программу на Дельфи
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

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

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


Попыталась написать.. но прога не работает.. посмотрите, пожалуйста..
вывод массива написала в метку. подскажите, как организовать вывод на форму?
спасибо!


Прикрепленные файлы
Прикрепленный файл  ______.rar ( 7.2 килобайт ) Кол-во скачиваний: 223
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

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

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


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


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Цитата
//стандартная пузырьковая сортировка. что ты делала - не поняла...
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;



ohmy.gif


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";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


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

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

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


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

Цитата
только сортировка не работает.. ((

Правда?Прикрепленное изображение

Цитата
подскажите,пожалуйста, что делать с выводом.. исходная матрица и пошаговая сортировка обязательно должны выводиться на форму! как это можно осуществить?

ну, тут у тебя 2 пути: либо на каждом шаге выводить в новый стринггрид, либо изменять содержимое старого - но тогда придется вставить паузу, иначе человек не успеет ничего воспринять...


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


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Цитата
а ты уверен, что она теперь сможет объяснить ...


Просто ты написала

Цитата
стандартная пузырьковая сортировка


Но она ведь выглядит не так как приведенный далее тобой код ? А то человек скажет что вот мол пузырек, а ему в ответ shok.gif

Если я что-то не так понял, то извиняюсь.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
либо на каждом шаге выводить в новый стринггрид, либо изменять содержимое старого
Простите, а вариант с записью в следующую строку StringGrid-а что, уже отменили? blink.gif Кстати, самый нормальный для восприятия: надо просмотреть результаты - СкроллБар к твоим услугам...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


Цитата(klem4 @ 11.11.2006 11:46) *

Но она ведь выглядит не так как приведенный далее тобой код ? А то человек скажет что вот мол пузырек, а ему в ответ shok.gif
Если я что-то не так понял, то извиняюсь.

Специально посмотрела. blink.gif в школьном учебнике такой вариант идет как пузырьковая (да и нам его давали как базовую пузырьковую, а все остальное - уже модификации). У Вирта - описанный тобой. У Кнута - сразу с флажком.... То есть отслеживать, были ли вообще перестановки.

volvo, ой. фигня получилась. я это и хотела сказать....
написала в "новую стринггрида", (пропустив слово "строку"), потом перед отправкой просматривала на наличие опечаток - "исправила" на согласованное предложение. !mol1.gif mega_chok.gif надо было в смысл вникнуть. наляпать на форму несколько сот компонентов - это бы мне в голову вряд ли пришло.


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

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

 





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