
- •Курсовая работа
- •Задание
- •Реферат
- •Введение
- •Нормативные ссылки
- •Постановка задачи
- •Технология разработки приложения
- •Описание программы
- •Цепные дроби
- •Топологическая сортировка
- •Руководство пользователя
- •Пример работы программы вычисления цепных дробей изображен на рисунке 3.
- •Заключение
- •Список используемых источников
- •Приложение а – Листинг программы
- •Приложение б – Листинг программы
Описание программы
Цепные дроби
Обработка значений происходит так:
static double Function(int x, int n, int max)
{
if (n == max) return n + x;
if (n == 1) return x * 1.0 / (n + x * 1.0 / Function(x, n + 1, max));
return n + (x * 1.0 / Function(x, n + 1, max));
}
Задается числитель и знаменатель:
int n=50, ch=0, zn=0;
int[] h = new int[n];
int[] z = new int[n];
int[] v = new int[n];
Console.WriteLine("Введите числитель: ");
ch= Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите знаменатель: ");
zn=Convert.ToInt32(Console.ReadLine());
Console.Clear();
Console.Write("Значение дроби: {0}/{1} = ( ", ch, zn);
Подсчет и запись в консоли цепной дроби происходит следующим образом:
for (int i=0; i<n; i++)
{
h[0] = ch;
z[0] = zn ;
if (z[i] == 0) break;
else
{
v[i] = h[i] / z[i];
Console.Write(v[i]+" ");
z[i + 1] = h[i] - z[i] * v[i];
h[i + 1] = z[i];
}
}
Console.Write(")");
Console.ReadKey();
}
}
}
Топологическая сортировка
Обход графа с целью топологической сортировки:
public static void DFS(int u, int[,] c, int[,] g, int n)
{
int t = 0;
for (int i = 0; i < n; i++)
{
if (g[u, i] == 1 && c[u, i] == 0)
{
Покраска вершины в серый цвет, это означает, что вершина посещена.
c[u, i] = 1; //grey
t = u;
u = i;
i = t;
DFS(u, c, g, n);
}
if (g[u, i] == 1 && c[u, i] == 1)
{
Покраска в черный цвет.
c[u, i] = 2; //black
Console.WriteLine("(" + (u+1) + ", " + (i+1) + ")");
t = u;
if(i<n-1)
u = i+1;
i = t;
DFS(u, c, g, n);
}
}
}
Массив вершин и цветов:
int n = 4, u = 0;
int[,] g = new int[n, n];
int[,] c = new int[n, n];
Матрица смежности графа.
g[0, 0] = 0; g[0, 1] = 0; g[0, 2] = 0; g[0, 3] = 1;
g[1, 0] = 0; g[1, 1] = 0; g[1, 2] = 0; g[1, 3] = 1;
g[2, 0] = 0; g[2, 1] = 0; g[2, 2] = 0; g[2, 3] = 1;
g[3, 0] = 1; g[3, 1] = 1; g[3, 2] = 1; g[3, 3] = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
Console.Write(g[i, j] + " ");
Console.WriteLine();
}
Console.WriteLine();
DFS(u, c, g, n);
Console.ReadKey();
}
}
}