Тема. Способи подання графів
Завдання
Створити програму з графічним інтерфейсом для виконання наступних завдань:
1) з першого текстового поля прочитати дані про пов’язані вершини графу (у окремих рядках вказано через пробіл номери пов’язаних ребрами вершин);
2) до другого текстового поля вивести таблицю суміжності для цього графу;
3) до третього текстового поля вивести кількість вершин графу;
4) до четвертого текстового поля вивести кількість ребер графу.
Примітка: вершини графу пронумеровані по порядку від 1, граф не містить ізольованих вершин.
Приклади вхідних та вихідних даних:
Граф
|
Вхідні дані
|
Вихідні дані
| ||
Memo1
|
Memo2
|
Edit1.Text
|
Edit2.Text
| |
1 4
1 2
1 3
3 2
3 5
|
0 1 1 1 0
1 0 1 0 0
1 1 0 01
1 0 0 0 0
0 0 1 0 0
|
5
|
5
|
procedure TForm1.Button1Click(Sender: TObject);
var v,r,a,b,x,i,j : Integer;
matr:array[1..100,1..100] of Integer;
s:string;
begin
//Заповнюємо матрицю суміжності та рахуємо кількість вершин
v:=0; //У цю змінну запам'ятовуватимемо найбільший номер вершини
For i := 0 To Memo1.Lines.Count - 1 do begin
//читаємо і-тий рядок з Memo1 до змінної s
s := Memo1.Lines[i];
//вилучаємо пробіли спереду та ззаду
s := Trim(s);
//вилучаємо подвійні пробіли
while pos(' ',s)<>0 do delete(s,pos(' ',s),1);
//Якщо в рядку є два числа, то використовуючи
//функції для роботи з рядками, запишемо їх спочатку
// до змінних a та b, а потім до матриці суміжності
If (s <> '') and (pos(' ',s)<>0) Then begin
x := pos(' ',s);
a := StrToInt(copy(s,1,x-1));
b := StrToInt(copy(s,x+1,Length(s)-x));
matr[a, b] := 1;
matr[b, a] := 1;
If a > v Then v := a;
If b > v Then v := b;
end
end;
//Рахуємо кількість ребер
r := 0;
For i := 1 To v do begin
For j := 1 To v do begin
If matr[i, j] = 1 Then r := r + 1;
end;
end;
r := r div 2;
//Виводимо матрицю суміжності
Memo2.Text := '';
For i := 1 To v do begin
s:='';
For j := 1 To v do begin
s := s + IntToStr(matr[i, j]) + ' ';
end;
trim(s);
Memo2.Lines.Add(s);
end;
//Виводимо кількість вершин
Edit1.Text := IntToStr(v);
//Виводимо кількість ребер
Edit2.Text := IntToStr(r);
end;
Завдання для самостійного виконання
Виконати програму для заданого вашим варіантом графу:
Немає коментарів:
Дописати коментар