Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 14.12.2012, 18:03   #1 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Гексагон, помогите составить описание, как работает программа

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.
gazon вне форума   Ответить с цитированием

Старый 14.12.2012, 18:03
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

К вашему вниманию темы, которые могут вам помочь своим содержанием

Помогите составить программу
Помогите составить схему
Помогите составить структурную схему

Старый 15.12.2012, 12:11   #2 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

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));

вот эта часть непонятна
gazon вне форума   Ответить с цитированием
Старый 15.12.2012, 12:11   #3 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

и почему с минусом выводим координаты??
gazon вне форума   Ответить с цитированием
Старый 16.12.2012, 13:08   #4 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Пожалуйста, помогите...!!!
gazon вне форума   Ответить с цитированием
Старый 17.12.2012, 19:55   #5 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ну прошу очень(((((
gazon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 17.12.2012, 21:44   #6 (permalink)
Gruvi
VIP user
 
Аватар для Gruvi
 
Регистрация: 10.03.2011
Сообщений: 766
Записей в дневнике: 1
Сказал(а) спасибо: 11
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 3453
По умолчанию

я так понимаю у вас тут 3х мерная система координат?
Gruvi вне форума   Ответить с цитированием
Старый 18.12.2012, 09:36   #7 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

да, Y выражается через Z и X
gazon вне форума   Ответить с цитированием
Старый 18.12.2012, 20:28   #8 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Ну так есть идеи???
gazon вне форума   Ответить с цитированием
Старый 18.12.2012, 22:22   #9 (permalink)
gazon
Member
 
Регистрация: 21.11.2011
Сообщений: 56
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Срочно нужна помощь, плиииз
gazon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 17:46.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.