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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.03.2011, 13:00   #1
Andrey770
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 83
По умолчанию Не розбирусь задачей

Локатор ориентован на одну из сторон света ("С"-север, "З"-Запад, "В"-восток, "ю"-Юг) и может принимать три цифровые команды:
1 поворот налево
-1 поворот на право
2 поворт на 180 градусов
Дан символ С-исходная ориентация локатора и числа №1 и №2, две посланные ему команды.
Вывести ориентацию локатора после выполнения данных команд.


вот код, но он не доработан, дальше не вооброжу что писать
подкиньте пару идей))
Код:
program one;
uses crt;
var x,y:integer;

begin
clrscr;
writeln('локатор ориентован на север ');

writeln('локатор принемает команды: ');

writeln(''1(поворот налево) -1(поворот направо) 2(поворот на 180 градусов));
writeln('                  введите команду локатору*: ');
readln(x);


if x=-1 then
writeln('локатор ориентован на Запад');
if x=1 then
writeln('локатор ориентован на Восток');
if x=2 then
writeln('локатор ориентован на Юг');
readln;
end.

Последний раз редактировалось Stilet; 14.03.2011 в 08:04.
Andrey770 вне форума
Старый 13.03.2011, 20:13   #2
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Как вариант можно как-нибудь так сделать:

Код:
var
	ch : integer;
	x : real;
	y1, y2 : integer;
BEGIN
	ch := 0;
	x := pi/2;
	writeln('North');
	while (true) do begin
		writeln('Enter command: ');
		readln(ch);
		if (ch = -1) then 
			x := x - pi/2
		else if (ch = 1) then 
			x := x + pi/2
		else if (ch = 2) then 
			x := x + pi
		else break;
		
		y1 := round(sin(x));
		y2 := round(cos(x));
		
		if ((y1 = 1) and (y2 = 0)) then
			writeln('North');
		if ((y1 = 0) and (y2 = 1)) then
			writeln('East');
		if ((y1 = -1) and (y2 = 0)) then
			writeln('South');
		if ((y1 = 0) and (y2 = -1)) then 
			writeln('West');
	end;
END.
Uguu~
__STDC__ вне форума
Старый 13.03.2011, 20:54   #3
Andrey770
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 83
По умолчанию

спасибо сейчас буду что то думать))
Andrey770 вне форума
Старый 13.03.2011, 20:56   #4
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Andrey770 Посмотреть сообщение
спасибо сейчас буду что то думать))
в смысле думать? я готовое решение дал.. или пояснить нужно?
Uguu~
__STDC__ вне форума
Старый 13.03.2011, 21:39   #5
Andrey770
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 83
По умолчанию

да, если не трудно
за что отвечает это

y1 := round(sin(x));
y2 := round(cos(x));
?
Andrey770 вне форума
Старый 13.03.2011, 22:01   #6
__STDC__
Участник клуба
 
Аватар для __STDC__
 
Регистрация: 16.03.2009
Сообщений: 1,013
По умолчанию

Цитата:
Сообщение от Andrey770 Посмотреть сообщение
да, если не трудно
за что отвечает это

y1 := round(sin(x));
y2 := round(cos(x));
?
хм.. Программа построена на том факте, что возможно 4 случая ориентировки локатора.. т.е. 4 направляющих вектора с координатами {1,0}, {0,1}, {-1,0},{0,-1}
Соответственно, в приведенных выше строках вычисляются координаты этих самых направляющих векторов..
Uguu~
__STDC__ вне форума
Старый 13.03.2011, 22:38   #7
Andrey770
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 83
По умолчанию


все понятно, разобрался
спасибо !!!
очень помогли
Andrey770 вне форума
Старый 14.03.2011, 08:45   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Совсем недавно писал вот что :

Код:
procedure DestToCoordDelta(aind: byte; var ay, ax: shortint);
begin
if aind not in [0..7]
  then bedin
  ax := 0;
  ay := 0;
  end;
ay := round(sin(aind*pi/4));
ax := round(cos(aind*pi/4));
end;
Выдает дельту координат для 8 (от 0 до 7) направлений, соответственно единичной окружности. Направление зависит от принятых программистом в программе системы направлений осей Х, У , при чём во всей программе надо сие соблюдать, во избежание косяков. Если экранная (0/0 - верх левый угол) то обход номеров направлений по часовой стрелке, если координатная (0/0 нижний левый угол), то против часовой
phomm вне форума
Старый 14.03.2011, 09:34   #9
Andrey770
Пользователь
 
Регистрация: 11.03.2011
Сообщений: 83
По умолчанию

Спасибо за помощь phomm)
Andrey770 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с задачей в c# OnlySergio Помощь студентам 4 25.11.2009 10:47
Помогите с задачей. prammp Паскаль, Turbo Pascal, PascalABC.NET 2 09.01.2009 22:05
помогите с задачей kiko Паскаль, Turbo Pascal, PascalABC.NET 10 25.11.2008 14:31
Помогите с задачей drossel Общие вопросы C/C++ 9 01.06.2008 21:45