Страница 1 из 1

Элементарный вопрос по randomize

Добавлено: 05 ноя 2006, 15:12
Enchante
Всем доброго времени суток.
Такая проблема. Массив надо заполнить случайными числами. Для этого, как я понимаю, используется randomize, но вот то ли я тупая, то ли лыжи не едут (с).
Вот фрагмент программы, в конце требует после end поставить ; , что-то не так, но ЧТО именно я понять не могу.

var
i,n:integer;
m : array [1..100] of real;

begin

Writeln ('Enter n, no more than 100');
read (n);

randomize;
for i:=1 to n do
m:=random(n);
for i:=1 to n do
write (m);

end.

Добавлено: 05 ноя 2006, 16:58
Duncon

Код: Выделить всё

var 
  i,n:integer; 
  m : array [1..100] of real; 
begin 
   Writeln ('Enter n, no more than 100'); 
  read (n); 

  randomize; 
  for i:=1 to n do 
  m[i]:=random(n); 
  for i:=1 to n do 
  write (m[i]); 
//!!!!!!!!!!!!!!!!!!!!!!!!!
end;
//!!!!!!!!!!!!!!!!!!!!!!!!!
end.

Добавлено: 05 ноя 2006, 17:27
Enchante
Все, спасибо. Проблема на самом деле заключалась в том что зачем-то в начале закралась procedure randomize. :o ops:
А как сделать так, чтобы генератор случайных чисел выдавал числа только на интервале от [0,1]?
И еще вопрос. я почему-то не могу запустить программу которая у меня получается, т. е. жму alt-f9, появляется окошко с надписью press any key и т д. и все. Запустить получается только если выйду в dos shell и там наберу имя файла. Как это исправляется, а то геморно очень.

Добавлено: 05 ноя 2006, 22:20
Duncon
Код полный выложи, вообще компиляция просто F9...

Добавлено: 05 ноя 2006, 23:38
Enchante
да он и есть пока что полный - у меня пока что полного задания нет еще, так что ожидайте еще вопросов
просто я где-то прочитала что надо поставить procedure randomize, вот и влепила не разобравшись полностью :)

program laba;
var i,n:integer;
m : array [1..100] of real;
begin
Writeln ('Enter n, no more than 100');
read (n);
randomize;
for i:=1 to n do
m:=random(n);
for i:=1 to n do
writeln (m);
end.

про F9 вопрос снимается, надо было нажимать ctrl+F9. Что-то туго вспоминается паскаль за 5 лет, что им не занималась.

Добавлено: 06 ноя 2006, 11:10
Duncon
Вообщето синтаксис приложения в Delphi выглядит примерно так

Код: Выделить всё

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
консольная - имеет такой вид

Код: Выделить всё

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  { TODO -oUser -cConsole Main : Insert code here }
end.

Добавлено: 06 ноя 2006, 11:13
Duncon
Тобишь твоя программа должна иметь такой вид попробуй запусти...

Код: Выделить всё

program laba;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
  i, n: integer;
  m: array [1..100] of real;
begin
  Writeln ('Enter n, no more than 100');
  read (n);
  randomize;
  for i:=1 to n do
    m[i]:=random(n);
  for i:=1 to n do
    writeln (m[i]);
end.

Добавлено: 07 ноя 2006, 08:44
somewhere
А как сделать так, чтобы генератор случайных чисел выдавал числа только на интервале от [0,1]?
Random без параметров делает то, что тебе нужно. Но результат, как понятно из определения, уже вещественный. Нужный диапазон получаеться обычными арифметическими операциями.

Код: Выделить всё

A := -5 + 10*Random;
здесь генерятся произвольные числа от -5 до 5.

Добавлено: 07 ноя 2006, 09:34
LAngel
Есть стандартная:
function Random(const ARange: Integer): Integer;

для генерации целого Random-числа от 0 до ARange

Добавлено: 09 ноя 2006, 18:43
Enchante
Спасибо, очень помогли!