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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2011, 17:34   #1
S0ap
Новичок
Джуниор
 
Регистрация: 10.07.2011
Сообщений: 2
По умолчанию pascal random

Здравствуйте. Помогите пожалуйста, с такой программой:
Разработать 2 функции: первая генерирует случайное равномерно распределенное в заданном интервале число(использовать стандартные подпрограммы модуля System); вторая определяет расстояние от начала координат до заданной точки плоскости.
Основная программа(пользоваться созданными функциями): В динамической памяти сформировать набор из 30 записей, каждый из которых содержит радиус и координаты центра круга. Заполнить эти записи случайными значениями: радиус - число из диапазона [8, 40], координаты центра - числа из диаразона [-100, 150]. Определить площадь круга, центр которого наиболее отдален от начала координат.
Вот что у меня получилось:
Код:
program l12_13;
uses crt;
type
nabir=record
R,Xs,Ys:^integer;
end;
var max,i,j:integer;
p: ^integer;
Mas:array[1..30] of ^nabir;
n,k,S:^double;
function distance(a,b:integer):double;
begin
distance:= sqrt(a*a+b*b);
end;
function rand1(a,b:integer): integer;
begin
    randomize;
   rand1:= a+ random (b-a+1);
    end;
begin
clrscr;
new(mas[i]^.R); new(mas[i]^.Xs); new(mas[i]^.Ys);  new(Mas[i]);
new(n); new(k); new(S);
mark(p);
writeln('vvodim massiv(Radius,X,Y)');
K^:=0;
for i:=1 to 30 do
begin
Mas[i]^.r^ :=rand1(8,40);
Mas[i]^.Xs^:=rand1(-100,150);
Mas[i]^.Ys^:=rand1(-100,150);
N^:=distance(mas[i]^.Xs^,mas[i]^.Ys^);
if N^> k^ then
begin
k^:=n^;
max:=i;
end;
writeln(Mas[i]^.r^,' ',Mas[i]^.Xs^,' ',Mas[i]^.Ys^);
end;
S^:=mas[max]^.r^*mas[max]^.r^*pi;
writeln(S^:6:2);
release(p);
readkey;
end.
Проблема в том, что генератор заполняет массив записей одним и тем же случайным числом, а нужно, чтобы значения радиусов и координат были разными для каждой записи. Заранее благодарен тем, кто поможет натолкнуться на нужное решение.
S0ap вне форума Ответить с цитированием
Старый 10.07.2011, 17:39   #2
l1pton17
Пользователь
 
Аватар для l1pton17
 
Регистрация: 01.11.2010
Сообщений: 75
По умолчанию

Команду randomize; нужно в основном блоке программы прописывать) где-то после clrscr; поставьте его.
l1pton17 вне форума Ответить с цитированием
Старый 10.07.2011, 17:49   #3
S0ap
Новичок
Джуниор
 
Регистрация: 10.07.2011
Сообщений: 2
По умолчанию

Делал так и все равно не получалось. Но потом убрал randomize; в самой функции и все заработало. Большое спасибо
S0ap вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
random Fanyuus Помощь студентам 7 07.05.2011 15:43
Random adm2010 Общие вопросы Delphi 4 23.01.2011 13:39
Random ограничения (pascal) _fynjy_ Помощь студентам 24 11.01.2011 10:19
"Random" в матрице (Turbo Pascal) JIUMOH Помощь студентам 3 29.12.2009 11:35
Random W_P Паскаль, Turbo Pascal, PascalABC.NET 2 08.10.2008 00:05