• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Гексагон, помогите составить описание, как работает программа

  • Автор темы Автор темы gazon
  • Дата начала Дата начала

gazon

Новые
Регистрация
21 Ноя 2011
Сообщения
56
Реакции
0
Баллы
0
Гексагон, помогите составить описание, как работает программа

1. Постановка задачи
Поле для игры в новую игру "Гексагон" разбито на шестиугольники (см. рисунок). Игрок, стартуя из некоторого начального шестиугольника, сделал несколько ходов. Каждый ход заключается в перемещении фишки в соседний шестиугольник (имеющий с тем, где находилась фишка до начала хода, общую сторону) — тем самым, ход делается вдоль одного из направлений X, Y или Z (см. рисунок). Игрок записал все свои ходы, причем если фишка двигалась вдоль какого-либо направления несколько раз подряд, то в записи это обозначается указанием направления и количества ходов, которые были сделаны.
Напишите программу, которая найдет кратчайший (по количеству совершаемых ходов) путь в начальную клетку из той, где фишка оказалась после ходов игрока.

2. Характеристика входной и выходной информации
Ввод:
В первой строке входного файла записано число N — количество строк в записи перемещений фишки (1<N<100). Далее идет N строк с записью ходов: в каждой строке записана сначала большая буква X, Y или Z, задающая направление, затем пробел, и число, задающее количество ходов в данном направлении (число может быть и отрицательным, если игрок перемещал фишку параллельно оси, но в направлении, противоположном направлению оси). Все числа по модулю не превышают 200.
4
Z -2
Y 3
Z 3
X -1


Вывод:
В выходной файл выведите описание кратчайшего пути обратно в начальную клетку в том же формате, в каком описание задано во входном файле (за исключением ограничений). Все числа, определяющие количество ходов в каком-либо направлении, должны быть ненулевыми.
2
Y -2
Z –2




var input,output: text;
i,n:integer;
x,y,z: longint;
c:char;
q:longint;


function min(a,b:longint):longint;
begin
if a<b then min:=a else min:=b;
end;

function nonzero(q:longint):longint;
begin
if q=0 then nonzero:=0 else nonzero:=1;
end;

begin
assign(input,'is1131.in');
assign(output,'is1131.out');
reset(input);
rewrite(output);
readln(input,n);
x:=0;
y:=0;
z:=0;
for i:=1 to n do begin
read(input,c);
readln(input,q);
if c='X' then x:=x+q;
if c='Y' then
begin
x:=x+q;
z:=z+q;
end;
if c='Z' then z:=z+q;
end;
if (x>0) and (z>0) then y:=min(x,z);
if (x<0) and (z<0) then y:=-min(-x,-z);
x:=x-y;
z:=z-y;
writeln(output,nonzero(x)+nonzero(y)+nonzero(z));
if x<>0 then writeln(output,'X ',-x);
if y<>0 then writeln(output,'Y ',-y);
if z<>0 then writeln(output,'Z ',-z);
close(input);
close(output);
end.
 
if (x>0) and (z>0) then y:=min(x,z);
if (x<0) and (z<0) then y:=-min(-x,-z);
x:=x-y;
z:=z-y;
writeln(output,nonzero(x)+nonzero(y)+nonzero(z));

вот эта часть непонятна
 
и почему с минусом выводим координаты??
 
Пожалуйста, помогите...!!!
 
Ну прошу очень(((((
 
я так понимаю у вас тут 3х мерная система координат?
 
да, Y выражается через Z и X
 
Ну так есть идеи???
 
Срочно нужна помощь, плиииз
 
Назад
Сверху