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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2010, 18:24   #1
TheCross94
Новичок
Джуниор
 
Регистрация: 18.10.2010
Сообщений: 2
По умолчанию random(На промежутке [-40;20])+array

Здравствуйте...
В основном паскаль мне давался относительно легко, но в последнее время появилась задача что сильно меня "кусает"
Вот условие:
В одномерном массиве Y состоящей из N целых чисел, лежащих на промежутке [-40;20], вычислить произведение эл-тов массива, расположенных до первого положительного ел-та.
(заполнение c помошью random);
Вот текстмоей программы:

program tp;
const N=20;
var Y:array[1..N]of integer;
k,i,p:integer;
flag:boolean;
begin
randomize;
for i:=1 to n do
Y[i]:=random(60)-40;{Вот тут то и вся беда,говорят что промежуток неправильный}
p:=1;
k:=1;
flag:=true;
while flag:=true do
begin
if Y[k]<=0
then p:=p*Y[k];
else flag:=false;
k:=k+1;
end;
writeln('Произведение р=',p);
end.


Думаю обьяснять не стоит что к чему сдесь...
Зарание спасибо!!!
TheCross94 вне форума Ответить с цитированием
Старый 18.10.2010, 18:32   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

(61) - 40.
Random возвращает случайное число от 0 до указанного в качестве аргумента, не включая значение самого аргумента.
0 <= X < Range
http://www.pascal.helpov.net/index/pascal_Random
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 18.10.2010, 18:34   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Код:
Y[i]:=random(60)-40;{Вот тут то и вся беда,говорят что промежуток неправильный}
Можно так(если неправильно, то я не знаю как):
Код:
Y[i]:=random(20)-random(40);
_-Re@l-_ вне форума Ответить с цитированием
Старый 18.10.2010, 18:37   #4
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

2 _-Re@l-_ - неправильно. Представь - максимальные возвращаемые числа это 19 и 39.
19 - 39 = -20. Не сходится с диапазоном [-40..20]

2 TheCross94 - используй кнопочку # для оформления кода.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли

Последний раз редактировалось Roof; 18.10.2010 в 18:40.
Roof вне форума Ответить с цитированием
Старый 18.10.2010, 18:39   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Ах, [-40;20]...Я прочитал [-20;20]...
_-Re@l-_ вне форума Ответить с цитированием
Старый 18.10.2010, 18:40   #6
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Код:
flag:=true;
while flag:=true do
begin
if Y[k]<=0
then p:=p*Y[k];
else flag:=false;
k:=k+1;
end;
writeln('Произведение р=',p);
да уж! а так не короче?
Код:
while y[k]<=0 do
begin
if y[k]<>0 then p:=p*y[k];
inc(k);
end;
writeln('Произведение р=',p);
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 18.10.2010, 19:09   #7
TheCross94
Новичок
Джуниор
 
Регистрация: 18.10.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Mad_Cat Посмотреть сообщение
Код:
flag:=true;
while flag:=true do
begin
if Y[k]<=0
then p:=p*Y[k];
else flag:=false;
k:=k+1;
end;
writeln('Произведение р=',p);
да уж! а так не короче?
Код:
while y[k]<=0 do
begin
if y[k]<>0 then p:=p*y[k];
inc(k);
end;
writeln('Произведение р=',p);
Код:
inc(k);
- а что означает данный оператор?
TheCross94 вне форума Ответить с цитированием
Старый 18.10.2010, 19:10   #8
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

inc(k); == k:=k+1;
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 18.10.2010, 19:26   #9
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
а что означает данный оператор?
Эт не оператор, эт процедура инкремента.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Генерация даты в заданном промежутке zver777 Общие вопросы Delphi 6 09.04.2010 09:33
Выборка записей в промежутке нескольких минут ssdm SQL, базы данных 4 29.01.2010 15:47
Как сделать, чтобы ГСЧ выдавал числа в определенном промежутке? HawkSerj Общие вопросы Delphi 8 31.07.2009 20:24
Машина случайным образом генерирует натуральные числа в промежутке [0, 1, 2, … 100] JustinTI Помощь студентам 4 21.12.2008 14:31
Array или не array Димарик Общие вопросы Delphi 4 18.06.2007 15:16