Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 21 стр.

UptoLike

Составители: 

21
Верность этого преобразования так же очевидна. Теперь еще преобразуем
полученный код.
int[] data = new int[] { 2, 4, 6, 8, 4, 1, 3, 7 };
int[] newData = new int[data.Length + 1];
int i = 0;
newData[i] = data[i];
i = 1;
newData[i] = data[i];
i = 2;
newData[i] = data[i];
i = 3;
newData[i] = data[i];
i = 4;
newData[i] = data[i];
newData[5] = 3;
i = 6;
newData[i] = data[i-1];
i = 7;
newData[i] = data[i-1];
i = 8;
newData[i] = data[i-1];
Верность этого преобразования так же не вызывает сомнений. Теперь для
получения последовательных числе в i воспользуемся циклом. Получим:
int[] data = new int[] { 2, 4, 6, 8, 4, 1, 3, 7 };
int[] newData = new int[data.Length + 1];
for (int i = 0; i < 5; i++) {
newData[i] = data[i];
}
newData[5] = 3;
for (int i = 6; i < 9; i++) {
newData[i] = data[i - 1];
}
Видно, что 9 – размер нового массива. А 5 – это позиция вставляемого
элемента. А 6 – это 5+1, т. е. insIndex + 1. Воспользуемся этим для дальнейнего
преобразования кода.
int[] data = new int[] { 2, 4, 6, 8, 4, 1, 3, 7 };
int[] newData = new int[data.Length + 1];
int insIndex = 5;
for (int i = 0; i < insIndex; i++) {
newData[i] = data[i];
}
newData[insIndex] = 3;
for (int i = insIndex + 1; i < newData.Length; i++) {
newData[i] = data[i - 1];
}
После вставки нам массив data не нужен, а нужен newData. Т. е. можно
сказать, что в data надо записать newData.
int[] data = new int[] { 2, 4, 6, 8, 4, 1, 3, 7 };
int[] newData = new int[data.Length + 1];
int insIndex = 5;