Пользовательский интерфейс

This commit is contained in:
Морозов Андрей 2021-10-26 10:56:37 +00:00
parent d0d0e4398d
commit 03599e5d6f
1 changed files with 75 additions and 75 deletions

View File

@ -5,37 +5,48 @@ import 'dart:io';
int getIntLine() => int.parse(stdin.readLineSync(encoding: utf8)!); int getIntLine() => int.parse(stdin.readLineSync(encoding: utf8)!);
String getStrLine() => stdin.readLineSync(encoding: utf8)!; String getStrLine() => stdin.readLineSync(encoding: utf8)!;
void printGraphsName(List<Graphs> inp) {
print("Графы: ");
for (int i = 0; i < inp.length; i++) {
print("$i: ${inp[i].getName()}");
}
}
void main(List<String> arguments) { void main(List<String> arguments) {
Map<int, int> x = {1: 10, 2: 11}; /*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>{};
x[1] = 11; x[3] = 11;
var p2 = Dot.fromMap("Т2", x); var p2 = Dot.fromMap("Т2", {});
p2.printD();
x = <int, int>{}; x = <int, int>{};
var x1 = Graphs.fromList("Граф 1", [p, p2], true, false); var x1 = Graphs.fromList("Граф 1", [p, p2], true, false);
x1.addDot(p); x1.addIsolated("T3");
x1.addDotFromToLists("T3", [1, 2], [10, 20]);
x1.addIsolated("T4"); x1.addIsolated("T4");
x1.checkDots(true); x1.addPath(2, 3, 21);
//print(x1.addPath(4, 1, 10));
x1.printG(); x1.printG();
print(x1.addPath(4, 1, 10)); x1.printToFile("o.txt");
x1.printG(); var x2 = Graphs.fromFile("o.txt");
x1.printToFile("outTest.txt");
var x2 = Graphs.fromFile("outTest.txt");
x2.printG();
x2.delPath(1, 4);
x2.printG();
x2.delDot(1);
x2.printG();
x2.delDot(2);
x2.printG();
x2.addPath(1, 2, 11);
x2.printG(); x2.printG();
print(x2.bfsHasPath(1, 4));
print(x2.bfsPath(1, 3));
Graphs x1 = Graphs("Gt", false, true);
x1.addIsolated("T1");
x1.addIsolated("T2");
x1.addIsolated("T3");
x1.addIsolated("T4");
x1.addPath(1, 3, 1);
x1.addPath(3, 2, 5);
x1.addPath(2, 4, 10);
x1.printG();
print(x1.bfsPath(1, 4));
print(x1.bfsHasPath(1, 4));
*/
int deistvie = 1; int deistvie = 1;
List<Graphs> graphs = <Graphs>[]; List<Graphs> graphs = <Graphs>[];
String name; String name;
@ -101,7 +112,6 @@ void main(List<String> arguments) {
List<int> inn = <int>[]; List<int> inn = <int>[];
List<int> len = <int>[]; List<int> len = <int>[];
while (str != "" && str != " ") {
List<String> a = str.split(sep.space); List<String> a = str.split(sep.space);
for (var splitted in a) { for (var splitted in a) {
var dt = splitted.split(sep.dotToLength); var dt = splitted.split(sep.dotToLength);
@ -119,22 +129,17 @@ void main(List<String> arguments) {
break; break;
} }
} }
}
break; break;
} }
case 2: case 2:
{ {
// удалить граф // удалить граф
int num = graphs.length; int num = graphs.length;
stdout.write( printGraphsName(graphs);
"Нумерация с 0. Количество сохраненных графов: $num. Удалить граф с номером: "); stdout.write("Удалить граф с номером: ");
int x = getIntLine(); int x = getIntLine();
if (x >= 0 && x < num) { if (x >= 0 && x < num) {
/* graphs.removeAt(x);
vector<graf>::iterator i = grafs.begin();
for (int j = 0; j < x; j++) {
i++;}
grafs.erase(i);*/
} else { } else {
print("Не найден граф с таким номером"); print("Не найден граф с таким номером");
} }
@ -145,32 +150,27 @@ void main(List<String> arguments) {
// добавить вершину // добавить вершину
List<int> inn = <int>[]; List<int> inn = <int>[];
List<int> len = <int>[]; List<int> len = <int>[];
stdout.write(
"Ввод: *куда*|*вес* через пробел. Если граф не взвешенный, то в *вес* ставить 0: ");
String x = getStrLine();
while (x != "" && x != " ") {
String a = x.substring(0, x.indexOf(sep.dotToLength));
if (x.contains(sep.dotToLength)) {
x = x.substring(x.indexOf(" ") + 1, x.length);
} else {
x = "";
}
if (a.contains(sep.dotToLength)) { stdout.write("Имя вершины: ");
inn.add(int.parse((a.substring(0, a.indexOf(sep.dotToLength))))); String dotName = getStrLine();
len.add(int.parse(
a.substring(a.indexOf(sep.dotToLength) + 1, a.length)));
} else {
inn.add(int.parse(a));
len.add(0);
}
}
int num = graphs.length;
stdout.write( stdout.write(
"Нумерация с 0. Количество сохраненных графов: $num. Вставка в графа с номером: "); "Ввод: *куда*|*вес* через пробел. Если граф не взвешенный, то *вес* можно не указывать.\nВершина cмежна с: ");
str = getStrLine();
List<String> a = str.split(sep.space);
for (var splitted in a) {
var dt = splitted.split(sep.dotToLength);
if (dt.length == 2) {
inn.add(int.parse(dt[0]));
len.add(int.parse(dt[1]));
}
}
printGraphsName(graphs);
stdout.write("Вставка в графа с номером: ");
int y = getIntLine(); int y = getIntLine();
if (y >= 0 && y < num) { if (y >= 0 && y < graphs.length) {
graphs[y].addDotFromToLists("0", inn, len); graphs[y].addDotFromToLists(dotName, inn, len);
} else { } else {
print("Не найден граф с таким номером"); print("Не найден граф с таким номером");
} }
@ -181,11 +181,11 @@ void main(List<String> arguments) {
{ {
// удалить вершину // удалить вершину
int num = graphs.length; int num = graphs.length;
stdout.write( printGraphsName(graphs);
"Нумерация с 0. Количество сохраненных графов: $num. Вывод графа с номером: "); stdout.write("Вывод графа с номером: ");
int y = getIntLine(); int y = getIntLine();
graphs[y].printG();
if (y >= 0 && y < num) { if (y >= 0 && y < num) {
graphs[y].printG();
num = graphs[y].getDotAmount(); num = graphs[y].getDotAmount();
stdout.write("Количество вершин: $num. Вершина для удаления: "); stdout.write("Количество вершин: $num. Вершина для удаления: ");
int x = getIntLine(); int x = getIntLine();
@ -203,11 +203,11 @@ void main(List<String> arguments) {
{ {
// добавить ребро/дугу // добавить ребро/дугу
int num = graphs.length; int num = graphs.length;
stdout.write( printGraphsName(graphs);
"Нумерация с 0. Количество сохраненных графов: $num. Вставка в граф с номером: "); stdout.write("Вставка в граф с номером: ");
int y = getIntLine(); int y = getIntLine();
graphs[y].printG();
if (y >= 0 && y < num) { if (y >= 0 && y < num) {
graphs[y].printG();
num = graphs[y].getDotAmount(); num = graphs[y].getDotAmount();
stdout.write("Количество вершин: $num. Вершина куда вствляется: "); stdout.write("Количество вершин: $num. Вершина куда вствляется: ");
int x1 = getIntLine(); int x1 = getIntLine();
@ -229,12 +229,12 @@ void main(List<String> arguments) {
{ {
// удалить ребро/дугу // удалить ребро/дугу
int num = graphs.length; int num = graphs.length;
stdout.write( printGraphsName(graphs);
"Нумерация с 0. Количество сохраненных графов: $num. Удаление из графа с номером: "); stdout.write("Удаление из графа с номером: ");
int y = getIntLine(); int y = getIntLine();
graphs[y].printG();
int x1, x2; int x1, x2;
if (y >= 0 && y < num) { if (y >= 0 && y < num) {
graphs[y].printG();
num = graphs[y].getDotAmount(); num = graphs[y].getDotAmount();
stdout.write( stdout.write(
"Количество вершин: $num. Введите через пробел номера вершин между которыми удалить ребро: "); "Количество вершин: $num. Введите через пробел номера вершин между которыми удалить ребро: ");
@ -254,8 +254,8 @@ void main(List<String> arguments) {
case 7: // вывод в консоль case 7: // вывод в консоль
{ {
int num = graphs.length; int num = graphs.length;
stdout.write( printGraphsName(graphs);
"Нумерация с 0. Количество сохраненных графов: $num. Вывод графа с номером: "); stdout.write("Вывод графа с номером: ");
int x = getIntLine(); int x = getIntLine();
if (x >= 0 && x < num) { if (x >= 0 && x < num) {
graphs[x].printG(); graphs[x].printG();
@ -268,8 +268,8 @@ void main(List<String> arguments) {
{ {
// вывод в файл // вывод в файл
int num = graphs.length; int num = graphs.length;
stdout.write( printGraphsName(graphs);
"Нумерация с 0. Количество сохраненных графов: $num. Вывод графа с номером: "); stdout.write("Вывод графа с номером: ");
int x = getIntLine(); int x = getIntLine();
stdout.write("В файл: "); stdout.write("В файл: ");
String out = getStrLine(); String out = getStrLine();