Другие языки программирования и технологии
Помогите решить задачу в паскале
Помогите решить задачу: "Корабль может двигаться четырьмя курсами: на север, на юг, на восток и на запад. Капитан может дать команду на изменение курса: вправо, влево, вперед, назад. Определите новый курс корабля"
Интересная задачка!
Если её ещё дополнить следующими условиями:
− корабль может как двигаться, так и стоять;
− корабль может двигаться как вперёд, так и назад;
− корабль увеличивает/уменьшает скорость движения, если даётся повторная команда вперёд или назад;
− поворот корабля не может быть совершён, если корабль стоит;
− начальное положение корабля: стоит носом на север.
То получается вот такая программка:
const Kurs : array [0..3] of String[9] = ('на север', 'на восток', 'на юг', 'на запад');
var N, V : Integer; C : Char;
begin
WriteLn('Корабль стоит носом на север. '); N := 0; V := 0;
repeat
WriteLn('Выберите команду капитана: ');
WriteLn('1 - вперёд');
WriteLn('2 - назад');
WriteLn('3 - вправо');
WriteLn('4 - влево');
WriteLn('Любой другой символ - окончание ввода команд. ');
Write('Команда капитана: '); ReadLn(C);
case C of
'1' : Inc(V);
'2' : Dec(V);
'3' : if V <> 0 then if V > 0 then N := (N + 1) mod 4 else N := (N + 4) mod 4;
'4' : if V <> 0 then if V > 0 then N := (N + 4) mod 4 else N := (N + 1) mod 4;
end;
until Not(C in ['1'..'4']);
if V = 0 then WriteLn('Корабль стоит носом ', Kurs[N], '.') else
if V > 0 then WriteLn('Корабль движется ', Kurs[N], ' со скоростью ', V, ' узлов. ') else
WriteLn('Корабль движется задним ходом ', Kurs[(N + 2) mod 4], ' со скоростью ', Abs(V), ' узлов. ');
end.
Если её ещё дополнить следующими условиями:
− корабль может как двигаться, так и стоять;
− корабль может двигаться как вперёд, так и назад;
− корабль увеличивает/уменьшает скорость движения, если даётся повторная команда вперёд или назад;
− поворот корабля не может быть совершён, если корабль стоит;
− начальное положение корабля: стоит носом на север.
То получается вот такая программка:
const Kurs : array [0..3] of String[9] = ('на север', 'на восток', 'на юг', 'на запад');
var N, V : Integer; C : Char;
begin
WriteLn('Корабль стоит носом на север. '); N := 0; V := 0;
repeat
WriteLn('Выберите команду капитана: ');
WriteLn('1 - вперёд');
WriteLn('2 - назад');
WriteLn('3 - вправо');
WriteLn('4 - влево');
WriteLn('Любой другой символ - окончание ввода команд. ');
Write('Команда капитана: '); ReadLn(C);
case C of
'1' : Inc(V);
'2' : Dec(V);
'3' : if V <> 0 then if V > 0 then N := (N + 1) mod 4 else N := (N + 4) mod 4;
'4' : if V <> 0 then if V > 0 then N := (N + 4) mod 4 else N := (N + 1) mod 4;
end;
until Not(C in ['1'..'4']);
if V = 0 then WriteLn('Корабль стоит носом ', Kurs[N], '.') else
if V > 0 then WriteLn('Корабль движется ', Kurs[N], ' со скоростью ', V, ' узлов. ') else
WriteLn('Корабль движется задним ходом ', Kurs[(N + 2) mod 4], ' со скоростью ', Abs(V), ' узлов. ');
end.
пиши в аську 169527 143
могу помочь.. . если заитересован, пиши в личку....
пиши на мыло
Похожие вопросы
- Помогите решить задачи по Паскалю
- помогите решить задачу на паскале: напечатать "столбиком" значения sin2, sin3, ..sin 20.
- Помогите решить задачу на паскале
- Помогите решить задачу в паскале. Задание: Заменить в строке все вхождения "да" на "нет".
- Уважаемые!Помогите решить задачу по Паскалю,пожайлуста!
- Помогите решить задачу в паскале
- Помогите решить задачу (в паскале)!
- Помогите решить задачу в паскале, пожалуйста! !
- помогите решить задачу на паскале
- помогите решить задачу по Паскалю