Выбор из нескольких переменных

 

Подскажите, пожалуйста, как решить задачку.

Есть текстовые переменные, принимающие значения, либо пустые ("") вида

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 переменных, поэтому пустые нужно исключить.

 
Тут нужен массив, а не отдельные переменные. 
 

Здравствуйте, 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), а по максимальной длине заполняемого комментария. Особенно, если кусочки могут иметь разную длину.

 

Здравствуйте, Юрий.
Спасибо за подробный ответ! Очень помогли.