Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите разобраться с random
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Eichhorn
Есть задача:
Дан массив целых чисел, заданных случайным образом из диапазона от 29 до 35 и число Х из этого же диапазона. Длина массива равна N. Если число Х есть в массиве, то вычислить сумму элементов от начала массива до последнего вхождения этого числа в массив. Задачу решить для N=10.
Я написала программу. Она работает, но неправильно. Мне кажется, что косяк сидит именно в random. Можете подсказать что и как нужно изменить?
Вот текст программы:


var i,n,s,c,x:integer;
a:array[1..10] of integer;

begin
n:=10;
s:=0;
x:=29;
for i:=1 to n do
begin
randomize;
a[i]:=random(29)+35;
writeln(a[i]);
readln;
end;
if a[i]=x then c:=i;


for i:=1 to c do
s:=s+a[i];
writeln(s);
readln;
end.



В random пробовала подставлять и другие числа, но ноль эффекта.
Eichhorn
О, я со всем разобралась))) Задачу решила cool.gif
-Volvo-
Цитата
Мне кажется, что косяк сидит именно в random.
Мне тоже так кажется... Чтобы сгенерировать число от 29 до 35 - надо сгенерировать число от 0 до (35 - 29) = 6, и прибавить к нему 29. У тебя я вижу нечто иное... Вот так надо:

randomize; { Это делается один раз, в начале программы }
for i:=1 to n do
begin
a[i] := random(7) + 29;
{ ... }



А вот дальше начинается самое интересное. TarasBer, помнишь что я написал в соседнем топике, про безопасность? smile.gif После того, как цикл закончился, нельзя обращаться в i... Смотреть, есть ли число в массиве надо внутри цикла. А у тебя получается, что ты сравниваешь с X один какой-то элемент. Если повезет - то последний, если не повезет - то вообще программа вылетит с ошибкой.
Eichhorn
Спасибо) Учту на будущее)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.