IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Перевод кодов программ c Turbo Pascal на DElPHI 7, Возникают трудности
сообщение
Сообщение #1


Бывалый
****

Группа: Пользователи
Сообщений: 318
Пол: Мужской

Репутация: -  0  +


Условие задачи
1.Новый интернет-провайдер предоставляет услугу доступа в интернет с посекундной тарификацией . Для подключения нужно купить карточку позволяющую пользоваться интернетом определенное количество секунд .
при этом компания предает карточки стоимостью 1,2,4,..., 2 в 30-ой степени рублей на а0, а2,..... а30 секунд соответственно.


Родители разрешили Пете пользоваться интернетом М секунд . Определите за какую наименьшую сумму он сможет купить карточки , которые позволяют ему пользоваться интернетом не менее М секунд. Естественно, что Петя может купить как карточки различного достоинтства, так и несколько карточек одного достоинтства.
ПОЯСНЕНИЕ
Если ai<2•ai-1, то можно вместо карточки стоимотью 2i купить 2 карточки меньшей стоимости. Заменяем ai лучшим вариантом.
Затем покупаем карточки на нужное время, на каждом шаге выбирая карточку (набор карточек) с большим временем, но не превосходящим времени, которое осталось набрать.
Посмотреть решение


Как перевести этот код с паскаля в делфи?
var

a:array[0..30] of int64;
p,m:int64;
i:integer;
begin
read(m);
for i:=0 to 30 do
read(a[i]);
for i:=1 to 30 do
if a[i-1]*2>a[i] then
a[i]:=a[i-1]*2;
p:=0;
for i:=30 downto 0 do
if m>=a[i] then
begin
m:=m-a[i];
p:=p+(1 shl i);
end;
if m>0 then inc(p);
writeln(p);
end.
Я его перевел посмотрите правильно ли ?
var

a:array[0..30] of int64;
p,m:int64;
i:integer;
Procedure TForm1.Button1Click(Sender;Tobject)
begin
m:=strtoint(Edit1.Text);
for i:=0 to 30 do
a[i]:=strtoint(StringGrid.Cells[i-1,0]; label1.caption:=' ';
for i:=1 to 30 do
if a[i-1]*2>a[i] then
a[i]:=a[i-1]*2;
p:=0;
for i:=30 downto 0 do
if m>=a[i] then
begin
m:=m-a[i];
p:=p+(1 shl i); <<<<<<<<<<========= что за shl i ????????????
end;
if m>0 then label1.Caption:=inttostr(p) + 'наименьшая сумма';

end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 5:27
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name