Информатика и технология программирования


         

Практический совет избегать сложные вычисления






//------------------------------------------------------bk34-11.cpp

void copy(char c1[], char c2[])
{
int i=0; // Индекс в выходной строке

int k; // Индекс найденного фрагмента

int n; // Запоминание начала фрагмента

int m; // Счетчик фрагментов

for (m=1; (k=find(c1))!=-1; m++) // Пока есть фрагменты

{
for (n=k; c1[k]!= } ; k++, i++) c2[i]=c1[k];
c2[i++] = c1[k++]; // Переписать фрагмент

if (m/10!=0) c1[n++] = m/10 + 0 ; // На его место две цифры

c1[n++] = m%10 + 0 ; // номера во внешней форме

for (;c1[k]!=0; k++, n++) c1[n]=c1[k];
c1[n]=0; // сдвинуть " хвост" к началу

}
for (k=0; c1[k]!=0; k++, i++) c2[i]=c1[k];
c2[i]=0; // перенести остаток входной строки

}

Практический совет избегать сложные вычисления над индексами. Лучше всего для каждого фрагмента строки заводить свой индекс и перемещать их независимо друг от друга в нужные моменты. Что, например, сделано выше при " уплотнении" строки.


Содержание  Назад  Вперед