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

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

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

> Одномерный массив, Произведение элементов массива
Atreides
сообщение 23.12.2007 14:53
Сообщение #1


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

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


Попалась задача на одномерный массив:
Заполнить массив из 200 элементов случайным образом и посчитать произведение элементов до первого отрицательного.
Как такой рандом на отрицательные числа забить и подсчитать произведение?


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 7)
compiler
сообщение 23.12.2007 15:09
Сообщение #2


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

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


как то так...
var
ar:array[0..9] of integer;
i, pr:integer;
begin
randomize;
for i:=low(ar) to high(ar) do begin
ar[i]:=random(10)-random(10);
writeln(ar[i]);
end;

i:=low(ar);
pr:=1;
while ( (ar[i]>=0 ) and (i<=high(ar))) do begin
pr:=pr*ar[i];
inc(i);
end;
writeln;
writeln(pr);
end.
зыв случае, если первый элемент отрицательный, произведение= единица
ззы еще можна раскидать по процедурам


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Atreides
сообщение 24.12.2007 9:47
Сообщение #3


Ветеран Броуновского Движения
***

Группа: Пользователи
Сообщений: 281
Пол: Мужской
Реальное имя: Сергей

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


Так вот как это делалось.


--------------------
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 24.12.2007 10:54
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Цитата
ar[i]>=0


а стоит ли учитывать 0 ? Тут то 9 элементов, не страшно, а если их 9000 и первый же элемент = 0, дальнейший подсчет произведения не имеет никакого смысла. Так что у думаю под repeat .. until надо переделать и условие сделать строгое (для того, чтобы в случае если был домножен 0, выход из цикла)


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.12.2007 15:28
Сообщение #5


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(compiler @ 23.12.2007 15:09) *

                ar[i]:=random(10)-random(10);
- зачем это?
Вполне можно обойтись так:
                ar[i]:=random(20)-10;


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 24.12.2007 15:36
Сообщение #6


Гость






Цитата
- зачем это?
Вот ЭТО:
Цитата
ar[i]:=random(20)-10;
(при работе на TP и настройках по умолчанию) с большой степенью вероятности приведет к аварийному останову программы.

P.S. Кстати, первый вариант приведет к тому же результату.

Сообщение отредактировано: volvo - 24.12.2007 15:41
 К началу страницы 
+ Ответить 
Lapp
сообщение 24.12.2007 15:58
Сообщение #7


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(volvo @ 24.12.2007 15:36) *

(при работе на TP и настройках по умолчанию) с большой степенью вероятности приведет к аварийному останову программы.

Согласен, лучше явно преобразовать тип:
ar[i]:=Integer(random(20))-10;


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 24.12.2007 21:49
Сообщение #8


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


А если так?
ar[i] := random(2) + (-10);
smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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