Тут нужен массив, а не отдельные переменные.
Здравствуйте, Dmitrii Kolesnikov.
Если делать прямо в точности как вы написали, но с использованием массивов, то можно сделать примерно так:
string a[80]; string b[13]; int OnInit() { a[0] = "text1"; a[1] = ""; a[2] = "text2"; a[3] = ""; // ... a[10] = "text10"; // ... for(int i = 0, j = 0; i < 80; i++) { if(a[i] != NULL && a[i] != "") { b[j] = a[i]; j++; } if(j == 13) { break; } } string comment = ""; for(int i = 0; i < 13; i++) { comment += b[i]; if(i < 13 - 1) { comment += "|"; } } Print(comment); return(INIT_FAILED); }
Если же переменные B_N вам нужны только для формирования комментария, то без них вполне можно обойтись так:
string a[80]; int OnInit() { a[0] = "text1"; a[1] = ""; a[2] = "text2"; a[3] = ""; // ... a[10] = "text10"; // ... string comment = ""; for(int i = 0, j = 0; i < 80; i++) { if(a[i] != NULL && a[i] != "") { comment += a[i] + "|"; j++; } if(j == 13) { break; } } Print(comment); return(INIT_FAILED); }
Но более надежно было бы ориентироваться не по количеству помещающихся кусочков в комментарий (которых у вас 13), а по максимальной длине заполняемого комментария. Особенно, если кусочки могут иметь разную длину.
Спасибо за подробный ответ! Очень помогли.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Подскажите, пожалуйста, как решить задачку.
Есть текстовые переменные, принимающие значения, либо пустые ("") вида
string A_1="text": либо A_1="";
A_2
A_3
...
A_80
Нужно из них отобрать только непустые и заполнить в переменных
B_1
B_2
...
B_13
для формирования комментария к ордеру
commentariy=B_1+"|"+B_2+"|"+B_3+"|"+B_4+"|"+B_5+"|"+B_6+"|"+B_7+"|"+B_8+"|"+B_9+"|"+B_10+"|"+B_11+"|"+B_12+"|"+B_13;
Помещаются только 13 переменных, поэтому пустые нужно исключить.