Пользовательский интерфейс
This commit is contained in:
parent
d0d0e4398d
commit
03599e5d6f
150
bin/graphs0.dart
150
bin/graphs0.dart
|
@ -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,23 +112,21 @@ 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);
|
if (dt.length == 2) {
|
||||||
if (dt.length == 2) {
|
inn.add(int.parse(dt[0]));
|
||||||
inn.add(int.parse(dt[0]));
|
len.add(int.parse(dt[1]));
|
||||||
len.add(int.parse(dt[1]));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
list.add(Dot.fromTwoLists(dotName, inn, len));
|
|
||||||
}
|
}
|
||||||
Graphs newG =
|
list.add(Dot.fromTwoLists(dotName, inn, len));
|
||||||
Graphs.fromList(name, list, hasLength, isOriented);
|
|
||||||
newG.printG();
|
|
||||||
graphs.add(newG);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
Graphs newG =
|
||||||
|
Graphs.fromList(name, list, hasLength, isOriented);
|
||||||
|
newG.printG();
|
||||||
|
graphs.add(newG);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -126,15 +135,11 @@ 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();
|
||||||
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)));
|
stdout.write(
|
||||||
} else {
|
"Ввод: *куда*|*вес* через пробел. Если граф не взвешенный, то *вес* можно не указывать.\nВершина cмежна с: ");
|
||||||
inn.add(int.parse(a));
|
str = getStrLine();
|
||||||
len.add(0);
|
|
||||||
|
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]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int num = graphs.length;
|
printGraphsName(graphs);
|
||||||
stdout.write(
|
stdout.write("Вставка в графа с номером: ");
|
||||||
"Нумерация с 0. Количество сохраненных графов: $num. Вставка в графа с номером: ");
|
|
||||||
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();
|
||||||
|
|
Loading…
Reference in New Issue