{$I-}
program Kursovaya_rabota;
uses crt;
var i, j, k, l, m, n, p: shortint;
q: char;
a: array [1.. 15,1..15] of shortint;
b, c:array [1..15] of shortint;
s: boolean;
label x;
procedure Vvod;
label w;
begin
w: repeat
writeln ('Vvedite celoe chislo vershin n (ot 1 do 15): ');
readln(n);
s:=IOResult=0;
if (not s) or (n<1) or (n>15)
then write (' Oshibka vvoda! ');
if (not s) or (n<1) or (n>15)
then until (n>0) and (n<16) and s;
writeln ('Vvedite simmetrichnuu matricu smejnosti (0 i 1)');
for k:=1 to n do
begin
for j:=1 to n do
begin
read (a [k, j]);
s:=IOResult=0;
if (not s) or (a [k, j]>1) or (a [k, j]<0)
then begin
write (' Oshibka vvoda! Vvedite celoe chislo vershin n (ot 1 do 15): ');
goto w;
end;
end;
readln;
end;
for k:=1 to n do
for j:=1 to n do
if a [k, j]<>a [j, k]
then begin
write (' Matrica ne simmetrihna! ');
goto w;
end;
end;
procedure Ochistka;
begin
clrscr;
writeln ('Kolichestvo vershin n=', n);
for k:=1 to n do
begin
for j:=1 to n do
write (' ', a [k, j]);
writeln;
b[k]:=1;
c[k]:=0;
end;
m:=0;
end;
procedure ishodnaja;
begin
repeat
writeln ('Vvedite celii nomer vershini, s kotoroi sleduet nachat poisk (ot 1 do n) ');
readln(i);
s:=IOResult=0;
if b=0
then writeln ('Eta vershina uje bila rassmotrena ili ne suwestvuet.');
until (i>0) and (i<16) and (b<>0) and s;
write ('poisk nachinaetca s ishodnoi zadannoi vershini ');
write ('X_', i);
writeln;
b:=0;
l:=1;
p:=1;
c[l]:=i;
end;
procedure VShiriny;
begin
writeln ('…POISK V SHIRINY…');
ishodnaja;
for k:=1 to n do
if c[k]=0
then break
else begin
i:=c[k];
write ('prosmatrivaem vershinu X_', i, ' ');
for j:=1 to n do
if (a [i, j]=1) and (b[j]=1)
then begin
write (' k X_', i, ' prisoedinyaetca ');
write ('X_', j);
writeln;
b[j]:=0;
inc(l);
inc(p);
c[l]:=j;
end;
end;
if p=1
then write ('Eta vershina isolirovanna.');
writeln;
writeln ('… Poisk v shirinu dlya dostijimix vershin okonchen…');
end;
procedure VGlubiny;
label z;
begin
writeln ('…POISK V GLUBINY…');
ishodnaja;
repeat
z: i:=c[l];
for j:=1 to n do
if (a [i, j]=1) and (b[j]=1)
then begin
write (', iz nee spuskaemsya v ');
write ('X_', j);
b[j]:=0;
inc(l);
inc(p);
c[l]:=j;
goto z;
if l>1
then write ('eta vershina ischerpana');
writeln;
end;
dec(l);
until l=0;
if p=1
then write (' eta vershina izolirovana ');
writeln;
writeln ('… Poisk v glubinu dlya dostijimix vershin okonchen…');
end;
procedure vtorichnaja;
label y;
begin
y:if (n<>p) and (m<>p)
then begin
m:=0;
for j:=1 to n do
begin
c[j]:=0;
if b[j]=1
then begin
writeln (' vershina X_', j, ' ne dostijima ');
inc(m);
end;
end;
end
else m:=0;
while m<>0 do
begin
write ('S – poisk v shirinu, G – poisk v glubinu, ');
writeln ('N – izmenenie matrici, V – vixod iz programmi ');
q:=readkey;
case upcase(q) of
'G': begin
Ochistka;
VGlubiny;
goto y;
end;
'S': begin
Ochistka;
VShiriny;
goto y;
end;
'N': Vvod;
'V': halt;
end;
end;
end;
begin
clrscr;
x: Vvod;
repeat
write ('S – poisk v shirinu, G – poisk v glubinu, ');
writeln (' N – izmenenie matrici, V – vixod iz programmi');
repeat
q:=ReadKey;
case upcase(q) of
'N': goto x;
'S': begin
Ochistka;
VShiriny;
end;
'G': begin
Ochistka;
VGlubiny;
end;
'V': halt;
end;
until (upcase(q)='G') or (upcase(q)='S');
vtorichnaja;
until upcase(q)='V';
end.
Помогите пожалуйста перевести с Pascal на С++
Помогите пожалуйста перевести код с Pascal на С++
Код:
Мне просто нужно сделать курсовую на тему: "Поиск в глубину на неорентированном графе (рекурсивная реализация). Входные данные - количество вершин графа и его ребер. Выходные - вектор порядка посещения вершин." Нашел, что-то на Паскале, а нужно сдать на С++ или Си.
Буду зарание благодарен!!!