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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2009, 23:21   #1
OlegBodom
 
Аватар для OlegBodom
 
Регистрация: 01.10.2009
Сообщений: 9
По умолчанию ввод случайных чисел

Программа которая сортирует одномерный массив, ввод пользователя есть. Помогите дописать, ввод случайных чисел (Random) с помощью Клавиши (Button).
Вот код программы на Делфи.


#unit sort2_;

Код:
interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    Label4: TLabel;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
const
   SIZE=10;
var
   a:array[1..SIZE] of integer;
   k:integer;       // текущий элемент массива
   i:integer;       // индекс для ввода и вывода массива
   changed:boolean; // TRUE, если в текущем цикле были обмены

   buf:integer;     // буфер для обмена элементов массива

begin
   // ввод массива
   for i:=1 to SIZE do
       a[i] := StrToInt(StringGrid1.Cells[i-1,0]);

   label2.caption:='';

   // сортирвка массива
    repeat
       changed:=FALSE;       // пусть в текущем цикле нет обменов
       for k:=1 to SIZE-1 do
           if a[k] > a[k+1] then
              begin  // обменяем k-ый и k+1-ый элементы
	        buf := a[k];
	        a[k] := a[k+1];
	        a[k+1] := buf;
                changed := TRUE;
             end;

         // вывод массива
	 for i:=1 to SIZE do
             Label2.caption:=label2.caption+' '+IntTostr(a[i]);
         Label2.caption:=label2.caption+#13;

    until not changed; // если не было обменов, значит
                       // массив отсортирован

    Label2.caption:=label2.caption+#13+'Масив Відсортовано По зростанню.';
end;

procedure TForm1.Button2Click(Sender: TObject);
const
   SIZE=10;
var
   a:array[1..SIZE] of integer;
   k:integer;       // текущий элемент массива
   i:integer;       // индекс для ввода и вывода массива
   changed:boolean; // TRUE, если в текущем цикле были обмены

   buf:integer;     // буфер для обмена элементов массива

begin
   // ввод массива
   for i:=1 to SIZE do
       a[i] := StrToInt(StringGrid1.Cells[i-1,0]);

   label2.caption:='';

   // сортирвка массива
    repeat
       changed:=FALSE;       // пусть в текущем цикле нет обменов
       for k:=1 to SIZE-1 do
           if a[k] < a[k+1] then
              begin  // обменяем k-ый и k+1-ый элементы
	        buf := a[k];
	        a[k] := a[k+1];
	        a[k+1] := buf;
                changed := TRUE;
             end;

         // вывод массива
	 for i:=1 to SIZE do
             Label4.caption:=label4.caption+' '+IntTostr(a[i]);
         Label4.caption:=label4.caption+#13;

    until not changed; // если не было обменов, значит
                       // массив отсортирован

    Label4.caption:=label4.caption+#13+'Масив Відсортовано по спаданню.';

end;

end.

Последний раз редактировалось OlegBodom; 08.10.2009 в 10:38. Причина: Ошибка
OlegBodom вне форума Ответить с цитированием
Старый 07.10.2009, 23:34   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Цитата:
.... ввод случайных чисел (Random) с помощью Клавиши.
Непонял.... кто такая Клавиша? (ну раз с заглавной буквы )
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 07.10.2009, 23:57   #3
OlegBodom
 
Аватар для OlegBodom
 
Регистрация: 01.10.2009
Сообщений: 9
По умолчанию

Buttom. Есть такая Клавиша .....
OlegBodom вне форума Ответить с цитированием
Старый 08.10.2009, 00:03   #4
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Хм... Может Button?

Ну так и напиши в его ОнКлик:

Randomize;
For i := 1 To Size Do a[i] := Random(100);
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 09.10.2009, 10:21   #5
OlegBodom
 
Аватар для OlegBodom
 
Регистрация: 01.10.2009
Сообщений: 9
По умолчанию

говорит что незнае что такое DO
OlegBodom вне форума Ответить с цитированием
Старый 09.10.2009, 10:32   #6
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Это обыкновеный цикл for.... Или Do написанно не так, либо компилятор ругается совсем не на Do.

Если ты сам написал код в первом посте, то вопросы подобного плана очень странны....
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 09.10.2009, 10:39   #7
OlegBodom
 
Аватар для OlegBodom
 
Регистрация: 01.10.2009
Сообщений: 9
По умолчанию

нашел проблему....
OlegBodom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация случайных чисел?! Evgeny_1 Фриланс 12 17.03.2010 14:23
генератор случайных чисел на С++ ANTI Общие вопросы C/C++ 20 12.04.2009 13:02
Генератор случайных чисел psychopat Общие вопросы Delphi 11 18.02.2009 10:39
Генерация Случайных Чисел Кирилл13 Помощь студентам 6 06.01.2009 10:31
выборка случайных чисел furstenberg Общие вопросы Delphi 2 13.01.2008 21:07