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

Перевести с Паскаля на С++ - C++

Восстановить пароль Регистрация
 
Toxas
0 / 0 / 0
Регистрация: 20.02.2012
Сообщений: 8
10.03.2012, 14:24     Перевести с Паскаля на С++ #1
Внутри пирамиды Хеопса есть N комнат, в которых установлены 2M модулей, составляющих M устройств. Каждое устройство состоит из двух модулей, которые располагаются в разных комнатах, и предназначено для перемещения между парой комнат, в которых установлены эти модули. Перемещение происходит за 0.5 условных единиц времени. В начальный момент времени модули всех устройств переходят в подготовительный режим. Каждый из модулей имеет некоторый свой целочисленный период времени, в течение которого он находится в подготовительном режиме. По истечении этого времени модуль мгновенно включается, после чего опять переходит в подготовительный режим. Устройством можно воспользоваться только в тот момент, когда одновременно включаются оба его модуля. Индиана Джонс сумел проникнуть в гробницу фараона. Обследовав ее, он включил устройства и собрался уходить, но в этот момент проснулся хранитель гробницы. Теперь Джонсу необходимо как можно быстрее попасть в комнату с номером N, в которой находится выход из пирамиды. При этом из комнаты в комнату он может попадать только при помощи устройств, так как проснувшийся хранитель закрыл все двери в комнатах пирамиды.
Необходимо написать программу, которая получает на входе описание расположения устройств и их характеристик, а выдает значение оптимального времени и последовательность устройств, которыми надо воспользоваться, чтобы попасть из комнаты номер 1 в комнату номер N за это время.

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
{$R+,E+,N+} 
 program by96d1s2; 
 const 
 FREE=1; 
 DONE=2; 
 var 
 G : array[1..100,1..100] of byte; 
 P : array[1..100,1..100] of longint; 
 D : array[1..100] of single; 
 Labl,divd,kG : array[1..100] of byte; 
 path : array[1..100] of byte; 
 is,t1,t2,nok,Tres,NewTime : longint; 
 i,j,x,y,A,B,C,N,M,tg,Bliz : byte; 
 r1,r2 : byte; 
 Yes : boolean; 
 MinD : single; 
 function Nod (a,b:longint):longint; 
 begin 
 while (a<>b) do 
 if a>b then a:=a-b else b:=b-a; 
 Nod:=a; 
 end; 
 function Calculat (T:single; Tnok:longint):longint; 
 var i : longint; 
 begin 
 TRes:=0; 
 while (T>TRes) do inc(Tres,Tnok); 
 Calculat:=TRes ; 
 end; 
 begin 
 assign(input,'input2.txt'); reset(input); 
 assign(output,'output2.txt'); rewrite(output); 
 read(N,M); 
 for I:=1 to N do kG[i]:=0; 
 for i:=1 to M do 
 begin 
 read(r1,t1,r2,t2); nok:= (t1*t2) div Nod(t1,t2); 
 inc(kG[r1]); G[r1,kg[r1]]:=r2; P[r1,kg[r1]]:=nok; 
 inc(kG[r2]); G[r2,kg[r2]]:=r1; P[r2,kg[r2]]:=nok; 
 end; 
 for i:=1 to N do 
 begin 
 Labl[i]:=FREE; divd[i]:=1; d[i]:=maxlongint; 
 end; 
 Labl[1]:=DONE; divd[1]:=0; d[1]:=0; 
 for j:=1 to kG[1] do d[G[1,j]]:=P[1,j]+0.5; 
 for i:=1 to N-1 do 
 begin 
 MinD:=maxlongint; 
 for j:=1 to N do 
 if (Labl[j]=FREE) and (d[j]<MinD) 
 then begin MinD:=d[j]; Bliz:=j end; 
 Labl[Bliz]:=DONE; 
 for j:=1 to kG[Bliz] do 
 if (Labl[G[Bliz,j]]=FREE) 
 then begin 
 NewTime:=Calculat(d[bliz],P[bliz,j]); 
 if d[G[Bliz,j]]> NewTime +0.5 
 then 
 begin 
 d[G[Bliz,j]]:= NewTime+0.5; 
 divd[G[Bliz,j]]:=Bliz; 
 end; 
 end; 
 end; 
 tg:=N; i:=0; 
 while tg<>0 do 
 begin 
 inc(i); path[i]:=tg; tg:=divd[tg]; 
 end; 
 writeln('Оптимальное время: ',D[N]:0:1); 
 write('искомая последовательность:'); 
 for j:=i-1 downto 1 do write(' ',path[j]); 
 close(input); close(output); 
 end.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2012, 14:24     Перевести с Паскаля на С++
Посмотрите здесь:

перевести с Паскаля в с++ C++
C++ Перевести с паскаля на Си++
C++ C Паскаля перевести в С++
Перевести с Паскаля на C++ C++
C++ Перевести с Паскаля на С++
C++ Перевести с Паскаля на С++
Перевести из паскаля в c++ C++

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

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

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