2015-01-22 2 views
-2

Я пишу код алгоритма лабиринта, и на данный момент я его закодировал часть его, но мне нужно изменить его на цикл для масштабируемости. Может кто-нибудь, пожалуйста, помогите мне, как превратить это в цикл?Нужно сделать петлю из моего жесткого кода

movement(x_3_vector.at(1),y_3_vector.at(1),x_4_vector.at(1),y_4_vector.at(1),"3"); 
movement(x_3_vector.at(2),y_3_vector.at(2),x_4_vector.at(2),y_4_vector.at(2),"3"); 
movement(x_3_vector.at(3),y_3_vector.at(3),x_4_vector.at(3),y_4_vector.at(3),"3"); 


movement(x_3_vector.at(4),y_3_vector.at(4),x_4_vector.at(4),y_4_vector.at(4),"4"); 
movement(x_3_vector.at(5),y_3_vector.at(5),x_4_vector.at(5),y_4_vector.at(5),"4"); 
movement(x_3_vector.at(6),y_3_vector.at(6),x_4_vector.at(6),y_4_vector.at(6),"4"); 
movement(x_3_vector.at(7),y_3_vector.at(7),x_4_vector.at(7),y_4_vector.at(7),"4"); 
movement(x_3_vector.at(8),y_3_vector.at(8),x_4_vector.at(8),y_4_vector.at(8),"4"); 
movement(x_3_vector.at(9),y_3_vector.at(9),x_4_vector.at(9),y_4_vector.at(9),"4"); 


movement(x_3_vector.at(10),y_3_vector.at(10),x_4_vector.at(10),y_4_vector.at(10),"5"); 
movement(x_3_vector.at(11),y_3_vector.at(11),x_4_vector.at(11),y_4_vector.at(11),"5"); 
movement(x_3_vector.at(12),y_3_vector.at(12),x_4_vector.at(12),y_4_vector.at(12),"5"); 
movement(x_3_vector.at(13),y_3_vector.at(13),x_4_vector.at(13),y_4_vector.at(13),"5"); 
movement(x_3_vector.at(14),y_3_vector.at(14),x_4_vector.at(14),y_4_vector.at(14),"5"); 
movement(x_3_vector.at(15),y_3_vector.at(15),x_4_vector.at(15),y_4_vector.at(15),"5"); 

movement(x_3_vector.at(16),y_3_vector.at(16),x_4_vector.at(16),y_4_vector.at(16),"6"); 
movement(x_3_vector.at(17),y_3_vector.at(17),x_4_vector.at(17),y_4_vector.at(17),"6"); 
movement(x_3_vector.at(18),y_3_vector.at(18),x_4_vector.at(18),y_4_vector.at(18),"6"); 
movement(x_3_vector.at(19),y_3_vector.at(19),x_4_vector.at(19),y_4_vector.at(19),"6"); 
movement(x_3_vector.at(20),y_3_vector.at(20),x_4_vector.at(20),y_4_vector.at(20),"6"); 

Проблема заключается в том, что мне нужно вызвать функцию «движение» в зависимости от того, сколько клеток в моем лабиринте я занимаю, так что иногда мне нужно вызвать функцию движения 3 раза со строкой «3», а иногда Мне нужно называть его 6 раз строкой «4» ... и так далее ...

Спасибо!

+0

Как вы знаете, сколько раз это назвать? – janisz

+2

Что значит «Мне нужно называть эту функцию ... иногда ... 3 раза ... иногда 6 ... иногда 5»? Какая функция? 'Movement'? Или новая функция, которая заменяет ваши жестко закодированные значения и сама вызывает «движение»? Кроме того, что означают эти индексы? Всегда ли они растут? Что это за значение строки в конце? Что-нибудь важное для вашего вопроса? Вероятно, вы должны отредактировать свой вопрос для ясности, потому что, поскольку это задано, неясно, что именно вы спрашиваете. – frasnian

+0

Я только что изменил вопрос, так что, возможно, это более понятно. –

ответ

0
for (int i=1; i<=20; i++) { 
    movement(x_3_vector.at(i),y_3_vector.at(i),x_4_vector.at(i),y_4_vector.at(i), getParam(i)); 
} 

// TODO: improve this function in order to reflect what the string value must be at any time 
string getParam(int index) { 
    // TODO: make sure it's between 1-20 or whatever your constraints are 
    if (index >= 16) return "6"; 
    else if (index >= 10) return "5"; 
    else if (index >= 4) return "4"; 
    else return "3"; 
} 
1

Ваш текущий код с петлей:

const char* s[20] = { 
    "3", "3", "3", 
    "4", "4", "4", "4", "4", "4", 
    "5", "5", "5", "5", "5", "5", 
    "6", "6", "6", "6", "6" 
    }; 
for (int i = 0; i != 20; ++i) { 
    movement(x_3_vector.at(1 + i), 
      y_3_vector.at(1 + i), 
      x_4_vector.at(1 + i), 
      y_4_vector.at(1 + i), 
      s[i]); 
} 
+0

Это не решает проблему, потому что иногда мне нужно вызвать функцию движения 3 раза со строкой «3», и иногда мне нужно называть ее 6 раз строкой «4» ... и так далее ... –

Смежные вопросы