|
Вопрос # 5 416/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Дан двумерный массив 10*10 заполненый нолями,
нужно заменит случайным образом некоторые ноли на еденицы, но не больше десяти едениц как сделать не врубаюсь((
 |
Вопрос задал: ierihon1 (статус: 1-ый класс)
Вопрос отправлен: 16 июня 2011, 16:44
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Gooddy
Здравствуйте, ierihon1!
Решение простое: в цикле 10 раз заполняем случайный элемент единицей.
Не заполнит гарантировано 10 элементов, но заполнит от 1 до 10 точно (на практике будет заполнено 7-10 элементов).
Приложение: Переключить в обычный режим-
-
- procedure FillArray(var ArrayToFill: array of ...);
- var
- TotalCount: Byte;
- x, y: Integer;
- begin
- Randomize;
- for TotalCount := 1 to 10 do
- begin
- x := Random()*10;
- y := Random()*10;
- ArrayToFill[ x, y ] := 1;
- end;
- end;
 |
Ответ отправил: Gooddy (статус: 3-ий класс)
Время отправки: 16 июня 2011, 16:56
Оценка за ответ: 4
Комментарий к оценке: Но нужно чтобы именно заданное количество... Но спасибо за помощь)
|
Мини-форум вопроса
Всего сообщений: 37; последнее сообщение — 17 июня 2011, 09:35; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2]
|
Gooddy (статус: 3-ий класс), 16 июня 2011, 18:05 [#21]:
Удачи с сапёром. Кстати. Лучше сделать array of boolean и ставить true для мины и false для пустого поля.
Ну или byte хотя бы 
Кстати почитай:
https://www.delphi-int.ru/forum/topic/118/
С идентификаторами и отступами у тебя почти всё отлично, а вот магические числа будет полезно заменить.
Чисти код! Чисти код! Чисти код!
|
|
Gooddy (статус: 3-ий класс), 16 июня 2011, 18:06 [#22]:
ierihon1: не надо) тем более нельзя.
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 16 июня 2011, 18:07 [#23]:
Ага) ну я пока что сам алгоритм пытался продумать и заменю на Boolean потом) Спасибо большое)
|
16 июня 2011, 18:08: Статус вопроса изменён на решённый (изменил автор вопроса — ierihon1)
|
Gooddy (статус: 3-ий класс), 16 июня 2011, 18:12 [#24]:
Сейчас будет самое сложное)
Теперь нужно посчитать сколько мин вокруг каждой клетки и затем сделать качественный ввод и вывод.
Понадобится ещ...
А ладно, думай сам. Это же упражнение)
Прочитай лучше ссылочку я тебе дал.
M - плохое название. Поправь на Matrix, потом убери все магические числа (кроме 0 и 1) и поправь регистр, чтобы везде было одинаково.
Чисти код! Чисти код! Чисти код!
|
|
min@y™ (статус: Доктор наук), 16 июня 2011, 18:53 [#25]:
Цитата (min@y™):
Random()*10; - улыбнуло.
Цитата (Gooddy):
RandomRange в модуле math - лишние 500 байт.
Да я не об этом, а о том, что вызов Random() без параметров возвратит вещественное число Х в диапазоне 0 ≤ Х < 1. Компилятор просто не пропустит такое присваивание из-за несовместимости типов.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Gooddy (статус: 3-ий класс), 16 июня 2011, 20:00 [#26]:
Я мильон лет не использовал Random() так что мне можно)
Чисти код! Чисти код! Чисти код!
|
|
min@y™ (статус: Доктор наук), 16 июня 2011, 20:03 [#27]:
Цитата (Gooddy):
Я мильон лет не использовал Random() так что мне можно)
Ну, компилятор-то этого не знает!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Gooddy (статус: 3-ий класс), 16 июня 2011, 20:11 [#28]:
Ну я же компилятору это не давал)
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 16 июня 2011, 21:42 [#29]:
Gooddy: Кстати все мины вокруг можно будет считать по формулам так что нет ничего сложного а главное нет магических чисел) а вот с отображением уже есть пара идей)
|
|
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 (статус: 1-ый класс), 16 июня 2011, 23:34 [#32]:
хотя нет уже разобрался)
|
|
Gooddy (статус: 3-ий класс), 16 июня 2011, 23:47 [#33]:
Выводи лучше крестик или звёздочку. Всё равно игра будет иметь только академический интерес.
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 17 июня 2011, 00:33 [#34]:
ну я вывожу буквой "М")) но вот с цифрами теперь проблемка((
|
|
ierihon1 (статус: 1-ый класс), 17 июня 2011, 00:37 [#35]:
хотя и с этим тоже разобрался))
|
|
Gooddy (статус: 3-ий класс), 17 июня 2011, 01:39 [#36]:
Кинешь посмотреть исходники, подскажем и покажем =)
Чисти код! Чисти код! Чисти код!
|
|
ierihon1 (статус: 1-ый класс), 17 июня 2011, 09:35 [#37]:
Обзатаельно)
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|