Форум программистов, компьютерный форум CyberForum.ru

Нужно перевести из PASCAL В VISUAL C++. - C++

Восстановить пароль Регистрация
 
Химмельсдорф
1 / 1 / 0
Регистрация: 04.12.2011
Сообщений: 4
01.04.2012, 05:58     Нужно перевести из PASCAL В VISUAL C++. #1
Задача Дейкстра
Дан неориентированный граф.Для него вам необходимо найти кратчайшее расстояние от одной заданной вершины до другой.
Входные данные
В первой строке входного файла три числа: N,S,M и F (1<=N<=100;1<=S,F<=N), где N-кол-во вершин графа,M-кол-во рёбер,S-начальная вершина, а F-конечная. В следующих M строках заданы по 3 числа, номера вершин и расстояние между ними.
Выходные данные
Вывести искомое расстояние или -1, если пути между указанными вершинами не существует.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
{$APPTYPE CONSOLE}
Const MaxN=100;
Big=MaxInt div  2;
Var N,Start<Finish,M,de:integer;
A:array[1..MaxN,1..MaxN] of integer;
D,p:array[0..MaxN] of integer;
Use:array[0..MaxN] of Boolean;
Procedure Print(v:integer);
Begin
If v>0 then Print(p[v]);
If v>0 then write(v,’’);
End;
Procedure deikstra(start:integer);
Var i,j,m:integer;
Begin
D[0]:=Big+1;
D[Start]:=0;
For i:=1 to N do Begin
m:=0
For j:=1 to N do
If (D[j]<D[m]) and not Use[J] Then m:=j;
Use[m]:=True;
For j:=1 to N do
If D[j]>A[m,j]+D[m] Then
Begin D[j]:=A[m,j]+D[m]; p[j]=m end;
End;
end;
Procedure Init;
Var i,j,k:integer;
Begin
Assign(Input,’Input.txt); Reset(input);
Assign(Output,’output.txt);Rewrite(Output);
Read(N,M,Start,Finish);
For i:=1 to N do
Begin
For j:=1 to N do if i=j then A[I,j]:=0 else A[i,j]:=Big;
D[i]=Big;// массив крадчайших расстояний от стартовой вершины
//до вершин с номером i
End;
For k:=1 to M do begin
Read(i,j,de);
End;
end;
begin
Init;
Deikstra(start);
If D[Finish]=Big Then Write(-1)
Else
Begin
Writeln(D[Finish]);
Print(Finish);
End;
Close(Input);
Close(output);
End.
Задача2
//bfs breads-first search-ПОИСК ПЕРВОГО В ШИРИНУ
{@APPTYPE CONSOLE}
Type matr=Array[1..20,1..20] of integer; vek=Array[0..20] of byte;
Var  Och,p,color:vek; j,k,X,Y:integer; A:matr; m,n:integer;
Ok:Boolean;
Procedure Init;
Var I,j,l:integer;
Begin
Assign(Input,’Input.txt); Reset(input);
Assign(Output,’output.txt);Rewrite(Output);
Readln(n,m);
For l:=1 to m do
Begin readln(i,j);
A[I,j]:=1; A[j,i]=1;
End;
Readln(X,Y);
Close(input);
End;
Procedure bfs(v:integer);
Var I,j,L:byte;
Begin
For j:=1 to n do begin p[j]:=0; color[i]:=0 end;
i=1; k=1;
color[v]:=1; Och[k]:=v;
Repeat;
L:=Och[i];
For j:=1 to n do if (A[L,j]<>0) and (color[j]=0) then
Begin
Color[j]:=1; p[j]:=L; k:=k+1; Och[k]:=j;
End;
i:=i+1;
Until i>k;
End;
Procedure Print(v:integer);
Begin
If v>0 then Print(p[v]);
If v>0 then write(v,’’);
Enf;
Begin
Init;
bfs(X);
Print(Y);
Writeln;
End.
Добавлено через 18 часов 55 минут
с 56строчки вторая задача.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 05:58     Нужно перевести из PASCAL В VISUAL C++.
Посмотрите здесь:

Нужно перевести программы из Pascal в C C++
C++ Перевести из PASCAL в С++
C++ перевести с Pascal на С++
C++ Перевести с Pascal на C++
Нужно перевести на язык Pascal C++
Перевести с Pascal на C++ C++
перевести с pascal на С++ C++
C++ Перевести с Pascal на C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 18:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru