Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2015, 22:42   #1
dimon_snake
Форумчанин
 
Регистрация: 05.11.2015
Сообщений: 167
По умолчанию Перевод - С++

Помогите, пожалуйста, с переводом программы с Free Pascal в C++.
Программа рабочая, на 100 баллов(это задача).
Код:
label 
lb1;
var 
x,y:longint;
z:byte;
fi,fo:text;
begin
Assign(fi,'box.in');
Assign(fo,'box.out');
Reset(fi);
Rewrite(fo);
while not eof(fi) do begin
z:=0;
Read(fi,x,y);
Readln(fi);
if (x=0)or(y=0)or(x=y) then begin
Write(fo,'YES");
goro lb1;
end;
while (1<2) do begin
if (x>y) then begin
x:=x-y;
y:=y+y;
inc(z)
else if (x<y) then begin
y:=y-x;
x:=x+x;
inc(z);
end
else Write(fo,'YES');
if (x=0)or(y=0)or(x=y) then begin
Write(fo,'YES");
break;
end;
if z=100 then begin
Write(fo,'NO');
break;
end;
end;
lb1:
Writeln(fo);
end;
Close(fo);
end.
Если нужно условие:
Призи
Студентка Оля любит принимать участие в разных олимпиадах и конкурсах и по окончанию университета Оля имеет большое количество призов. Подруги решили помочь Оле сложить призы. Они сложили их в две коробки: N призов в одной и M - в другой. Коробки очень большие, поэтому каждая может вместить все призы. Оля хочет узнать, можно ли переложить все призы в одно из коробок, если с одной коробки во вторую можно перелаживать столько призов, сколько их уже есть во второй коробке. Перелаживать призы с коробки в коробку можно сколько угодно раз.
ФОРМАТ ВХОДНЫХ ФАЙЛОВ
Входной файл (box.in) имеет несколько строк, каждая строка имеет два числа M и N (1<=N,M<=10^9)
ФОРМАТ РЕЗУЛЬТАТА
В выходной файл box.out необходимо вывести по одному слову для каждой строки: YES, если призы можно сложить в одну коробки, или NO - если нельзя.
Алгоритм: узнаем, в какой коробке призов больше, отнимаем от большей коробки меньшую, а к меньшей прибавляем еще одну меньшую.
Код:
if (x>y) then begin
x:=x-y;
y:=y+y;
inc(z)
else if (x<y) then begin
y:=y-x;
x:=x+x;
inc(z);
end 
else ...
И при этом к z прибавляем единицу. Так как цикл (1<2) бесконечен, то при выводе данных в выходной файл работа цикла прекращается. Так же использовал метку (объясните, как можно без метки, понимаю, это не лучший вариант решения).

Последний раз редактировалось dimon_snake; 22.12.2015 в 23:01.
dimon_snake вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод из С++ в С Rishka Помощь студентам 4 24.03.2013 22:32
перевод з С++ на С Zewer Помощь студентам 2 13.01.2011 16:51
перевод KostyaS Общие вопросы C/C++ 0 05.01.2011 14:52
перевод Александе еть я Помощь студентам 1 09.05.2010 00:14
Перевод из Кб в Мб и т.д. okgo Паскаль, Turbo Pascal, PascalABC.NET 8 18.11.2008 21:03