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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ fgets и CString http://www.cyberforum.ru/cpp-beginners/thread515355.html
Здравствуйте, У меня возник вопрос, проконсультируйте, пожалуйста, что можно сделать в этой ситуации? Нужно прочитать строчку целиком из файла. Насколько я понял fscanf целиком строчку запомнить не может (возможно я не умею пользоваться этой функцией). Использую fgets. Но fgets не дружит с классом CString, ему char подавай. Но вводить переменную char не хочется, потому что придется ему...
C++ enum Ку! Имеется некое множество enum SomeSet { elem_1, elem_2, elem_3, // ... }; Это множество активно юзается в том виде в каком оно прописано изначально... http://www.cyberforum.ru/cpp-beginners/thread515345.html
C++ Функция, которая возвращает слово в строке, которое короче всех.
Добрый день уважаемые программисты! Есть задание: Написать функцию, которая возвращает слово в строке, которое короче всех. Заголовок функции: char* shortestWord (const char *str); Если таких слов несколько, то первое из них, которое встречается в строке. Написать программу, которая принимает от пользователя набор строк (массив строк) и выводит самое короткое слово в каждой из строк. Для...
Поиск всех возможных A и B из формулы C++
Есть задание: любое натуральное число N (N > 7). Исходя из формулы N = 3a+5b получить все возможные A и B . Решил я это следующим образом: #include <stdio.h> #include <conio.h> main(){ int n, a, b; printf("Enter N (N > 7) = "); do{ scanf("%i",&n);
C++ Int to char http://www.cyberforum.ru/cpp-beginners/thread515327.html
Смотрел в инете примеры int i=5992; char number u; u=(char)i; cout <<u<<endl; Выходит всякое безобразие.
C++ Запись звука с помощью bass Всем привет Вопрос такой Как записать звук с помощью библиотеки bass? документация, прилагающаяся к нему мне непонятна из-за плохого знания ин-яз. а в интернете информации почти нету, разве что на польских форумах, я в их языке тоже не силен Если не сложно - приведите пример с двумя кнопками(начало и остановка записи) подробнее

Показать сообщение отдельно
Toxas
0 / 0 / 0
Регистрация: 20.02.2012
Сообщений: 8

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

10.03.2012, 14:24. Просмотров 347. Ответов 0
Метки (Все метки)

Внутри пирамиды Хеопса есть 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.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru