Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 416

/ вопрос решён /

Доброго времени суток, уважаемые эксперты!
Дан двумерный массив 10*10 заполненый нолями,
нужно заменит случайным образом некоторые ноли на еденицы, но не больше десяти едениц как сделать не врубаюсь((

ierihon1 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: ierihon1 (статус: 1-ый класс)
Вопрос отправлен: 16 июня 2011, 16:44
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: Gooddy

Здравствуйте, ierihon1!

Решение простое: в цикле 10 раз заполняем случайный элемент единицей.
Не заполнит гарантировано 10 элементов, но заполнит от 1 до 10 точно (на практике будет заполнено 7-10 элементов).

Приложение:
  1.  
  2.  
  3. procedure FillArray(var ArrayToFill: array of ...);
  4. var
  5. TotalCount: Byte;
  6. x, y: Integer;
  7. begin
  8. Randomize;
  9. for TotalCount := 1 to 10 do
  10. begin
  11. x := Random()*10;
  12. y := Random()*10;
  13. ArrayToFill[ x, y ] := 1;
  14. end;
  15. end;


Ответ отправил: Gooddy (статус: 3-ий класс)
Время отправки: 16 июня 2011, 16:56
Оценка за ответ: 4

Комментарий к оценке: Но нужно чтобы именно заданное количество... Но спасибо за помощь)

Мини-форум вопроса

Всего сообщений: 37; последнее сообщение — 17 июня 2011, 09:35; участников в обсуждении: 4.

Страницы: [« Предыдущая] [1] [2]

Gooddy

Gooddy (статус: 3-ий класс), 16 июня 2011, 18:05 [#21]:

Удачи с сапёром. Кстати. Лучше сделать array of boolean и ставить true для мины и false для пустого поля.
Ну или byte хотя бы ;)

Кстати почитай:
https://www.delphi-int.ru/forum/topic/118/

С идентификаторами и отступами у тебя почти всё отлично, а вот магические числа будет полезно заменить.
Чисти код! Чисти код! Чисти код!
Gooddy

Gooddy (статус: 3-ий класс), 16 июня 2011, 18:06 [#22]:

ierihon1: не надо) тем более нельзя.
Чисти код! Чисти код! Чисти код!
ierihon1

ierihon1 (статус: 1-ый класс), 16 июня 2011, 18:07 [#23]:

Ага) ну я пока что сам алгоритм пытался продумать и заменю на Boolean потом) Спасибо большое)

16 июня 2011, 18:08: Статус вопроса изменён на решённый (изменил автор вопроса — ierihon1)

Gooddy

Gooddy (статус: 3-ий класс), 16 июня 2011, 18:12 [#24]:

Сейчас будет самое сложное)
Теперь нужно посчитать сколько мин вокруг каждой клетки и затем сделать качественный ввод и вывод.
Понадобится ещ...
А ладно, думай сам. Это же упражнение)
Прочитай лучше ссылочку я тебе дал.
M - плохое название. Поправь на Matrix, потом убери все магические числа (кроме 0 и 1) и поправь регистр, чтобы везде было одинаково.
Чисти код! Чисти код! Чисти код!
min@y™

min@y™ (статус: Доктор наук), 16 июня 2011, 18:53 [#25]:

Цитата (min@y™):

Random()*10; - улыбнуло.

Цитата (Gooddy):

RandomRange в модуле math - лишние 500 байт.

Да я не об этом, а о том, что вызов Random() без параметров возвратит вещественное число Х в диапазоне 0 ≤ Х < 1. Компилятор просто не пропустит такое присваивание из-за несовместимости типов.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 16 июня 2011, 20:00 [#26]:

Я мильон лет не использовал Random() так что мне можно)
Чисти код! Чисти код! Чисти код!
min@y™

min@y™ (статус: Доктор наук), 16 июня 2011, 20:03 [#27]:

Цитата (Gooddy):

Я мильон лет не использовал Random() так что мне можно)

Ну, компилятор-то этого не знает! :)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Gooddy

Gooddy (статус: 3-ий класс), 16 июня 2011, 20:11 [#28]:

Ну я же компилятору это не давал)
Чисти код! Чисти код! Чисти код!
ierihon1

ierihon1 (статус: 1-ый класс), 16 июня 2011, 21:42 [#29]:

Gooddy: Кстати все мины вокруг можно будет считать по формулам так что нет ничего сложного а главное нет магических чисел) а вот с отображением уже есть пара идей)
ierihon1

ierihon1 (статус: 1-ый класс), 16 июня 2011, 23:19 [#30]:

вот блин с отображением и рпавда проблема... я хочу из bitmap загрузить в Image скопировать изображение мины и это нужно сделать в определённом месте на image.. что то с не могу разобраться с CopyRect...
Толяныч

Толяныч (статус: 4-ый класс), 16 июня 2011, 23:19 [#31]:

Результат будет приблизительно таким :
( произвел 4 серии по 10000 реализаций )
7 47
8 578
9 3121 Можно, конечно, посчитать по
10 6254 теории, но лень бошку ломать.

7 42
8 562
9 3117
10 6276

7 50
8 533
9 3114
10 6303

7 41
8 539
9 3067
10 6349
ierihon1

ierihon1 (статус: 1-ый класс), 16 июня 2011, 23:34 [#32]:

хотя нет уже разобрался)
Gooddy

Gooddy (статус: 3-ий класс), 16 июня 2011, 23:47 [#33]:

Выводи лучше крестик или звёздочку. Всё равно игра будет иметь только академический интерес.
Чисти код! Чисти код! Чисти код!
ierihon1

ierihon1 (статус: 1-ый класс), 17 июня 2011, 00:33 [#34]:

ну я вывожу буквой "М")) но вот с цифрами теперь проблемка((
ierihon1

ierihon1 (статус: 1-ый класс), 17 июня 2011, 00:37 [#35]:

хотя и с этим тоже разобрался))
Gooddy

Gooddy (статус: 3-ий класс), 17 июня 2011, 01:39 [#36]:

Кинешь посмотреть исходники, подскажем и покажем =)
Чисти код! Чисти код! Чисти код!
ierihon1

ierihon1 (статус: 1-ый класс), 17 июня 2011, 09:35 [#37]:

Обзатаельно)

Страницы: [« Предыдущая] [1] [2]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 апреля 2026, 01:55
Выполнено за 0.03 сек.