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

UptoLike

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

25
Удалить из массива по значению текущий элемент
Уменьшить текущую позицию в массиве.
ОкончаниеЕсли.
ОкончаниеЦикла
12. Приведем полную реализацию алгоритма в виде кода:
using System;
class Program {
public static void delByValue(ref int[] data, int delValue) {
int countDel = 0;
for (int i = 0; i < data.Length; i++) {
if (data[i] == delValue) {
countDel++;
}
}
int[] newData = new int[data.Length - countDel];
int curPos = 0;
for (int i = 0; i < data.Length; i++) {
if (data[i] != delValue) {
newData[curPos++] = data[i];
}
}
data = newData;
}
/// <summary>
/// Получение количества вхождений в массив
/// </summary>
/// <param name="data">массив</param>
/// <param name="curValue">значение, количество вхождений
которого ищется</param>
/// <returns>количество вхождений</returns>
public static int getCount(int[] data, int curValue) {
int count = 0;
for (int i = 0; i < data.Length; i++) {
if (data[i] == curValue) {
count++;
}
}
return count;
}
public static void processArray(ref int[] data) {
for (int i = 0; i < data.Length; i++) {
if (getCount(data, data[i]) == 2) {
delByValue(ref data, data[i]);
i = i - 1;
}
}
}