IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите разобраться с random
Eichhorn
сообщение 5.01.2011 9:50
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Женский
Реальное имя: Сафиуллина Алёна

Репутация: -  1  +


Есть задача:
Дан массив целых чисел, заданных случайным образом из диапазона от 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 - 5.01.2011 9:58


--------------------
Жизнь похожа на собачью упряжку: если не идёшь впереди, то всё время видишь одно и то же...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Eichhorn
сообщение 5.01.2011 10:59
Сообщение #2


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Женский
Реальное имя: Сафиуллина Алёна

Репутация: -  1  +


О, я со всем разобралась))) Задачу решила cool.gif


--------------------
Жизнь похожа на собачью упряжку: если не идёшь впереди, то всё время видишь одно и то же...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
-Volvo-
сообщение 5.01.2011 11:00
Сообщение #3


Гость






Цитата
Мне кажется, что косяк сидит именно в 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
сообщение 5.01.2011 11:53
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 50
Пол: Женский
Реальное имя: Сафиуллина Алёна

Репутация: -  1  +


Спасибо) Учту на будущее)))


--------------------
Жизнь похожа на собачью упряжку: если не идёшь впереди, то всё время видишь одно и то же...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 13:45
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"