Как в классе оформить что то вроде функции - C#
Формулировка задачи:
Привет, всем.
Такая ситуация в классе происходит последовательный расчет индекса с одинаковыми блоками кода, но разными действиями в зависимости от результата. Не получается сделать его методом и что бы он вызвался внутри своего же класса. Вот:
class Test {
public int Count(int n) {
int[] m = new int[n]; //Представление числа n как массив m (Пример 5 = 1 2 3 4 5)
for (int x = 0 ; x < n; x++) {
m[x] = x + 1;
}
int i = 0, c = 0;
for (; ; ) { //Бесконечный цикл
//Блок установки индекса i
for (; m[i] == 0; i++) {
//Блок закольцовки
if (i == n - 1) {
i = 0;
if ( m[i] != 0) break;
}
//Конец блока закольцовки
}
//Конец блока установки i
//Проверка на последний элемент в массиве, i установлен
if (m[i] != 0 & c == n - 1) return m[i];
//Блок обнуления
//Иниацилизация индекса обнуления
if (i == n - 1) i = 0;
else i++;
/////////
//Установка индекса обнуления
for (; m[i] == 0; i++) {
if (i == n - 1) {
i = 0;
if (m[i] != 0) break;
}
} //Конец индекс обнуления установлен
//Обнуление
m[i] = 0; c++;
//Конец блока обнуления
}
}
}Решение задачи: «Как в классе оформить что то вроде функции»
textual
Листинг программы
class Circle {
public static int round(int i, int[] m, int x) {
for (; m[i] == 0; i++) {
if (i == x - 1) {
i = 0;
if (m[i] != 0) break;
}
}
return i;
}
}
class Test {
public int Count(int x) {
int i = 0, c = 0;
int[] m = new int[x];
for (int x = 0; x < x; x++) {
m[x] = x + 1;
}
for (; ; ) {
i = Circle.round(i, m, x);
if (m[i] != 0 & c == x - 1) return m[i];
if (i == x - 1) i = 0;
else i++;
i = Circle.round(i, m, x);
m[i] = 0; c++;
}
}
}