Работа с алгоритмами

This commit is contained in:
Морозов Андрей 2021-11-11 08:10:21 +00:00
parent 7945800116
commit d4c57c6aad
1 changed files with 50 additions and 16 deletions

View File

@ -13,7 +13,7 @@ void printGraphsName(List<Graphs> inp) {
} }
void main(List<String> arguments) { void main(List<String> arguments) {
/*Map<int, int> x = {2: 10}; /* Map<int, int> x = {2: 10};
var p = Dot.fromMap("Т1", x); var p = Dot.fromMap("Т1", x);
p.printD(); p.printD();
x = <int, int>{}; x = <int, int>{};
@ -31,10 +31,10 @@ void main(List<String> arguments) {
x1.printToFile("o.txt"); x1.printToFile("o.txt");
var x2 = Graphs.fromFile("o.txt"); var x2 = Graphs.fromFile("o.txt");
x2.printG(); x2.printG();
print(x2.bfsHasPath(1, 4));
print(x2.bfsPath(1, 3)); print(x2.bfsPath(1, 3));
Graphs x1 = Graphs("Gt", false, true); var x1 = Graphs("Gt", false, true);
x1.addIsolated("T1"); x1.addIsolated("T1");
x1.addIsolated("T2"); x1.addIsolated("T2");
x1.addIsolated("T3"); x1.addIsolated("T3");
@ -43,17 +43,18 @@ void main(List<String> arguments) {
x1.addPath(3, 2, 5); x1.addPath(3, 2, 5);
x1.addPath(2, 4, 10); x1.addPath(2, 4, 10);
x1.printG(); x1.printG();
print(x1.bfsPath(1, 4)); //print(x1.bfsPath(1, 4));
print(x1.bfsHasPath(1, 4)); //print(x1.dfsIterative(1));
print(x1.dfsIterative(1)); print(x1.dijkstra(2));
*/ */
int deistvie = 1; int deistvie = 1;
List<Graphs> graphs = <Graphs>[]; List<Graphs> graphs = <Graphs>[];
String name; String name;
String str = ""; String str = "";
while (deistvie != 0) { while (deistvie != 0) {
stdout.write( stdout.write(
"1 - создать граф, 2 - удалить граф, 3 - добавить в граф вершину,\n4 - удалить вершину, 5 - добавить ребро/дугу, 6 - удалить ребро/дугу,\n7 - вывести граф на экран, 8 - вывести граф в файл, 9 - обход в ширину,\n0 - выход\nDeistvie: "); "1 - создать граф, 2 - удалить граф, 3 - добавить в граф вершину,\n4 - удалить вершину, 5 - добавить ребро/дугу, 6 - удалить ребро/дугу,\n7 - вывести граф на экран, 8 - вывести граф в файл, 9 - алгоритмы,\n0 - выход\nDeistvie: ");
deistvie = getIntLine(); deistvie = getIntLine();
switch (deistvie) { switch (deistvie) {
case 1: case 1:
@ -287,15 +288,20 @@ void main(List<String> arguments) {
} }
case 9: case 9:
{ {
int num = graphs.length; print("1 - BFS, 2 - DFS, 3 - Дейкстра. Действие:");
int d = getIntLine();
printGraphsName(graphs); printGraphsName(graphs);
int num = graphs.length;
stdout.write("Работаем в графе с номером: "); stdout.write("Работаем в графе с номером: ");
int y = getIntLine(); int y = getIntLine();
if (y >= 0 && y < num) {
graphs[y].printG(); graphs[y].printG();
if (y >= 0 && y < num) {
num = graphs[y].getDotAmount(); num = graphs[y].getDotAmount();
stdout.write("Вершина, из которой выходят: "); stdout.write("Вершина, из которой выходят: ");
int x1 = getIntLine(); int x1 = getIntLine();
switch (d) {
case 1:
{
stdout.write("Вершина, в которую идут: "); stdout.write("Вершина, в которую идут: ");
int x2 = getIntLine(); int x2 = getIntLine();
if (x1 >= 0 && x1 <= num && x2 >= 0 && x2 <= num) { if (x1 >= 0 && x1 <= num && x2 >= 0 && x2 <= num) {
@ -303,6 +309,34 @@ void main(List<String> arguments) {
} else { } else {
print("Не найдены введеные вершины в графе\n"); print("Не найдены введеные вершины в графе\n");
} }
break;
}
case 2:
{
if (x1 >= 0 && x1 <= num) {
print("DFS: ${graphs[y].dfsIterative(x1)}");
} else {
print("Не найдена введеныая вершина в графе\n");
}
break;
}
case 3:
{
if (x1 >= 0 && x1 <= num) {
print("Dijkstra: ${graphs[y].dijkstra(x1)}");
if (!graphs[y].getUseLengthBool()) {
print("*Т.к. граф не взвешенный, то вес пути = 1.\n");
}
} else {
print("Не найдена введеная вершина в графе\n");
}
break;
}
default:
{
break;
}
}
} else { } else {
print("Не найден граф с таким номером"); print("Не найден граф с таким номером");
} }