Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
1

Случайное число из заданного массива

04.06.2015, 06:29. Показов 2610. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
У меня такая задача: есть массивы целых чисел
Delphi
1
2
3
4
  good: array[-10..10] of integer;
  good_heat: array [35..55] of integer;
  good_back: array [53..56] of integer;
  good_HW: array [53..57] of integer;
Мне надо выводить случайное число из этих массивов
Delphi
1
2
3
4
5
  i:= Random(20);
  DBEdit4.Text:= IntToStr(good[i]);
  DBEdit5.Text:= IntToStr(good_heat[i]);
  DBEdit6.Text:= IntToStr(good_back[i]);
  DBEdit7.Text:= IntToStr(good_HW[i]);
То есть, по идее, должно показываться, например, в DBEdit4 любое целое число от 35 до 55. Но данный код не работает! Выводятся постоянно 0, либо шестизначные цифры.
Что я делаю не так?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2015, 06:29
Ответы с готовыми решениями:

Подсчитайте число и сумму положительных, число и произведение отрицательных элементов заданного массива
1. Подсчитайте число и сумму положительных, число и произведение отрицательных элементов заданного...

Найти сумму и число определенных элементов заданного массива
Найти сумму и число тех элементов заданного массива X1, X2, …, Xn, каждый из которых, во- первых,...

Случайное число с вероятностью
Здравствуйте! Нужна доработать функцию: function TapeFishKlyet(Mass:array of Byte):Integer; var...

Случайное число от 0 до $FFFFFFFFFFFFFFFF
Есть ли простой способ получить случайное число от 0 до $FFFFFFFFFFFFFFFF ? Просто на такую запись:...

15
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.06.2015, 06:56 2
Чтобы получить случайный индекс массива good нужно так
Delphi
1
i:=-10+random(21);
Добавлено через 2 минуты
А для массива good_HW
Delphi
1
i:=53+random(5);
Добавлено через 1 минуту
И так для каждого массива, поскольку диапазоны индексов разные.
1
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
04.06.2015, 07:54  [ТС] 3
На такой код выдает одни 0 =(
Delphi
1
2
3
4
5
6
7
8
  i:= -10+random(21);
  i_heat:= 35+random(21);
  i_back:= 53+random(5);
  i_HW:= 53+random(5);
  DBEdit4.Text:= IntToStr(good[i]);
  DBEdit5.Text:= IntToStr(good_heat[i_heat]);
  DBEdit6.Text:= IntToStr(good_back[i_back]);
  DBEdit7.Text:= IntToStr(good_HW[i_HW]);
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
04.06.2015, 08:35 4
зачем тебе DBEDIT? он не для этого нужен, еще добавь
randomize;
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
04.06.2015, 08:41  [ТС] 5
Есть Randomize в самом начале процедуры. DBEdit для работы с БД нужен, в том и смысл - случайные числа в окна вставить и в БД закинуть
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
04.06.2015, 08:57 6
Покажи где массив заполняешь?
1
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
04.06.2015, 15:40  [ТС] 7
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  Form1: TForm1;
  step: integer;
  sum_heat, sum_HW: Double;
  tp, Xp, td, ti, imp_heat, D_heat, imp_HW, D_HW: Double;
  good: array[-10..10] of integer;
  good_heat: array [35..55] of integer;
  good_back: array [52..58] of integer;
  good_HW: array [52..58] of integer;
begin
  Randomize;
  i:= -10+random(21);
  i_heat:= 35+random(21);
  i_back:= 53+random(5);
  i_HW:= 53+random(5);
  DBEdit4.Text:= IntToStr(good[i]);
  DBEdit5.Text:= IntToStr(good_heat[i_heat]);
  DBEdit6.Text:= IntToStr(good_back[i_back]);
  DBEdit7.Text:= IntToStr(good_HW[i_HW]);
Вот, и в итоге выводятся одни нули
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
04.06.2015, 15:42 8
ЗАПОЛНЯЕШЬ МАССИВ где
1
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
04.06.2015, 15:44  [ТС] 9
Эм, так я его и не заполняю... Надо, да? =)
Что-то совсем туплю, разве я в var не описала содержимое массивов?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
04.06.2015, 15:46 10
Цитата Сообщение от Madam_Cruel Посмотреть сообщение
На такой код выдает одни 0
Значит или не заполнены массивы или заполнены нолями.
Цитата Сообщение от Madam_Cruel Посмотреть сообщение
разве я в var не описала содержимое массивов?
Так нужно присвоить значения массивов, например
Delphi
1
2
for i:=-10 to 10 do
good[i]:=random(100);
1
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
04.06.2015, 15:50  [ТС] 11
Кажется начинает доходить, спасибо!
А чтобы в массиве были значения от 35 до 55 так надо написать?
Delphi
1
2
for i:=-0 to 20 do
good[i]:=random(35,55)
0
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
04.06.2015, 15:54 12
Delphi
1
good[i]:=RandomRange(35, 55)
Добавлено через 1 минуту
Delphi
1
2
uses 
....,Math;
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
04.06.2015, 16:01  [ТС] 13
Вот так?
Delphi
1
2
3
4
5
6
7
8
var
  good: array[-10..10] of integer;
begin
  Randomize;
  for i:=-0 to 20 do
  good[i]:=random(56)+36;
  i:=-10+random(21);
  DBEdit4.Text:= IntToStr(good[i]);
Что то опять ерунда выходит
0
57 / 57 / 37
Регистрация: 11.05.2015
Сообщений: 196
04.06.2015, 16:04 14
Лучший ответ Сообщение было отмечено Madam_Cruel как решение

Решение

Цитата Сообщение от Madam_Cruel Посмотреть сообщение
Эм, так я его и не заполняю... Надо, да? =)
Что-то совсем туплю, разве я в var не описала содержимое массивов?
Ты в варе тогда создавай статические массивы
Цитата Сообщение от Madam_Cruel Посмотреть сообщение
Delphi
1
2
3
4
good: array[-10..10] of integer = (-10,-9,-8,-7,-6,-5,4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9,10);
good_heat: array [35..55] of integer = (35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55);
good_back: array [53..56] of integer = (53,54,55,56);
good_HW: array [53..57] of integer = (53,54,55,56,57);
1
692 / 509 / 238
Регистрация: 02.10.2012
Сообщений: 1,741
04.06.2015, 16:07 15
Delphi
1
2
3
4
5
6
7
8
var
  good: array[-10..10] of integer;
begin
  Randomize;
  for i:=-10 to 10 do
     good[i]:=RandomRange(35, 55);
  i:=RandomRange(-10, 10);
  DBEdit4.Text:= IntToStr(good[i]);
0
0 / 0 / 0
Регистрация: 20.05.2014
Сообщений: 10
04.06.2015, 19:49  [ТС] 16
Вот, совсем забыла, что есть статические массивы. С ними мой изначальный код работает.
Спасибо за помощь!
0
04.06.2015, 19:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2015, 19:49
Помогаю со студенческими работами здесь

Случайное число в диапазоне
Здравствуйте! Есть Edit, в который вводится число х. Нужно сгенерировать случайное число,...

Для заданного массива подсчитать число элементов с начала и до первого отрицательного
Помогите, пожалуйста. Как сделать счетчик на подсчет элементов с начала и доп первого...

Сгенерировать 1 случайное число в диапазоне от 1 до 20
Всем привет! Подскажите как можно сгенерировать 1 случайное число в диапазоне от 1 до 20. ...

XSTORE - абсолютно случайное число
Спецы - пожалуйста приведите пример использования в делфи XSTORE, очень нужно сделать генератор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru