Войти

Показать полную графическую версию : Цикл?(


SAU-trade
07-12-2012, 01:29
Здравствуйте! Такой вопрос как реализовать цикл который бы делал так:

есть массив. генерируеться положение числа 2.

00000
00000
00200
00000
00000

Чтобы цикл обрисовал двойку 1

00000
01110
01210
01110
00000

Drongo
07-12-2012, 03:00
Определить индекс массива где находится двойка и запомнить его, пусть это будет [2][2] (цикл обхода массива и условие если, равно 2 мы нашли индексы местоположения двойки)
Дальше "шагаем" на единицу
вверх [2-1][2]
вниз [2+1][2]
в право [2][2+1]
влево [2][2-1]
вверх влево [2-1][2-1]
вниз влево [2+1][2-1]
вверх в право [2-1][2+1]
вниз в право [2+1][2+1]
заполняем эти индексы единичкой.
Естественно не забываем проверять выход за диапазоны массива если двойка будет в углу или с краю.

SAU-trade
07-12-2012, 10:52
Я это понимаю... Я могу по отдельности вводить условие установки/проверки выхода за массив) 1.. Я не могу вкурить как циклом организовать.

Drongo
07-12-2012, 14:15
SAU-trade, цикл вам нужен только для определения индексов двоечки. :)

...
const int row = 10;
const int column = 10;

int array[row][column] = {0}; // Здесь весь массив забит нулями, вы введёте свои данные

// Заполнение массива

for(int i = 0; i < row; i++){
for(int j = 0; j < column; j++){
if(array[i][j] == 2 ){ // Если равно двойке, мы нашли индексы и цикл нам больше не нужен.
// Шагаем обводкой и проверкой
// условия проверки выхода за диапазон и присваивание единички если всё гуд
if(j-1 < column) // вверх
array[i][j-1] = 0;
// вниз
...
}
}
}
...

lxa85
07-12-2012, 19:57
В качестве оффтопа.
SAU-trade, а этот вопрос с темой про морской бой никак не связан?




© OSzone.net 2001-2012