Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
6 / 6 / 2
Регистрация: 02.06.2012
Сообщений: 209

Определить, будет ли пешеход переходить дорогу. Верно ли я решил задачу?

11.09.2014, 14:00. Показов 921. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочется проверить себя, боюсь может я в своём решении косяков не увидел.
Задача:
Подойдя к перекрестку, пешеход думает о том, переходить ли ему улицу, или
остановиться. На решение влияет характер пешехода и еще два фактора: сигнал светофора
и близость опасно движущегося транспорта. Напишите программу с процедурой, которая
принимает и печатает решение в зависимости от переданных в неё трех параметров, а
именно.
· Параметр A = true, если горит зеленый;
· Параметр B = true, если поблизости опасно движется транспорт;
· Параметр C – это число, определяющее характер пешехода так:
1 - послушный и осторожный – учитывает светофор и опасность;
2 - послушный, но беспечный – смотрит только на светофор;
3 - хитрый вольнодумец – идет только на красный, если это ничем не грозит;
4 - непримиримый вольнодумец – идет на красный, невзирая на опасность;
5 - «экстремал» – идет только на красный, но так, чтобы грозила опасность;
6 - «безбашенный» – идет, несмотря ни на что;
7 - запуганный – никогда не идет через дорогу, а ищет подземный переход.


Решение автора:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
procedure Solve(A, B : boolean; C: integer);
var r: boolean;
begin
case C of
1: { - послушный и осторожный }
r:= A and not B;
2: { - послушный, но беспечный }
r:= A;
3: { - хитрый вольнодумец }
r:= not A and not B;
4: { - непримиримый вольнодумец }
r:= not A;
5: { - экстремал }
r:= not A and B;
6: { - безбашенный }
r:= true;
7: { - запуганый }
r:= false;
else
r:= false;
end;
if r
then Writeln('Вперед!')
else Writeln('Стой!');
end;
 
var X: char;
A, B : boolean;
C : integer;
 
begin
repeat
Write('Характер пешехода (1..7)= '); Readln(C);
if C=0 then break;
Write('Светофор зеленый? '); Readln(X);
A:= X='y';
Write('Есть опасность от транспорта? '); Readln(X);
B:= X='y';
Solve(A, B, C);
until false
end.
А вот моё решение:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var
  a, b: boolean;
  c: integer;
 
procedure Reshenie (a, b: boolean; c: integer);
var
  x, y: string;
begin
  x := 'Пешеход станет переходить улицу';
  y := 'Пешеход не станет переходить улицу';
  Case c Of
    1: If (a = True) and (b = False) Then WriteLn (x) Else WriteLn (y);
    2: If (a = True) Then WriteLn (x) Else WriteLn (y);
    3: If (a = False) and (b = False) Then WriteLn (x) Else WriteLn (y);
    4: If (a = False) Then WriteLn (x) Else WriteLn (y);
    5: If (a = False) and (b = True) Then WriteLn (x) Else WriteLn (y);
    6: WriteLn (x);
    7: WriteLn (y)
  End;
End;
 
Begin
  WriteLn ('Введите True, если горит зелёный сигнал светофора, иначе False');
  ReadLn (a);
  WriteLn ('Введите True, если поблизости опасно движется транспорт, иначе False');
  ReadLn (b);
  WriteLn ('Введите число от 1 до 7, определяющее характер пешехода так:');
  WriteLn ('1 - послушный и осторожный — учитывает и светофор и опасность;');
  WriteLn ('2 - послушный, но беспечный — смотрит только на светофор');
  WriteLn ('3 - хитрый вольнодумец — идет только на красный, если это ничем не грозит;');
  WriteLn ('4 - непримиримый вольнодумец — идет только на красный;');
  WriteLn ('5 - экстремал — идет только на красный, и так, чтобы грозила опасность;');
  WriteLn ('6 - «безбашенный» — идет, несмотря ни на что;');
  WriteLn ('7 - запуганный — никогда не идет через дорогу, а ищет подземный переход');
  Repeat
    Write ('c = ');  ReadLn(c);
    If (c < 1) or (c > 7) Then WriteLn ('Ошибка! Число должно быть от 1 до 7');
  Until (c > 0) and (c < 8);
  Reshenie (a, b, c);
  ReadLn
End.
Мне кажется или автор учебника опять перемудрил с кодом?) или это просто я по-деревенски решил?)))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2014, 14:00
Ответы с готовыми решениями:

Верно ли решил задачу?
Стрельба производится по пяти мишеням типа А, восьми мишеням типа В, семи мишеням типа С. Вероятность попадания в мишень типа А равна 0,6,...

Определить, кто из участников олимпиады решил задачу?
Не получается написать на visual prolog Шесть учащихся: Алексеев, Гришин, Смирнов, Трещин, Кузин и Фетисов участвовали в школьной...

Я решил Задачу на Произвольную Пространственную Систему Сил, решил систему из 5 неизвестных, КАК СДЕЛАТЬ ПРОВЕРКУ РЕШЕНИЯ ?
КАК СДЕЛАТЬ ПРОВЕРКУ РЕШЕНИЯ ?? ПРОВЕРКУ НЕ СИСТЕМЫ, А САМОГО РЕШЕНИЯ, то есть сумму моментов всех сил относительно каких точек...

3
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
11.09.2014, 20:55
Цитата Сообщение от Mix@siK Посмотреть сообщение
Pascal
1
If (a = True) and (b = False) Then ...
демонстрирует неумение работать с логическими переменными, достаточно
Pascal
1
If a and not b Then ...
В сухом остатке авторское решение намного понятнее (по крайней мере мне) и несколько короче. Можно было сократить до:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure Solve(A, B: boolean; C: integer);
var r: boolean;
begin
  r:= false;              { - запуганый и прочие }
  case C of
  1: r:= A and not B;     { - послушный и осторожный }
  2: r:= A;               { - послушный, но беспечный }
  3: r:= not A and not B; { - хитрый вольнодумец }
  4: r:= not A;           { - непримиримый вольнодумец }
  5: r:= not A and B;     { - экстремал }
  6: r:= true;            { - безбашенный }
  end;
  if r then Writeln('Вперед!') else Writeln('Стой!');
end;
Добавлено через 4 минуты
или с обработкой ошибки до:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure Solve(A, B: boolean; C: integer);
var r: boolean;
begin
  case C of
  1: r:= A and not B;     { - послушный и осторожный }
  2: r:= A;               { - послушный, но беспечный }
  3: r:= not A and not B; { - хитрый вольнодумец }
  4: r:= not A;           { - непримиримый вольнодумец }
  5: r:= not A and B;     { - экстремал }
  6: r:= true;            { - безбашенный }
  7: r:= false;           { - запуганый }
  else begin WriteLn('*** Ошибка: неизвестный характер.'); Exit; end;
  end;
  if r then Writeln('Вперед!') else Writeln('Стой!');
end;
Добавлено через 2 часа 42 минуты
... или вообще без промежуточной переменной:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure Solve(A, B: boolean; C: integer);
begin
  if (c<1) or (c>7) 
  then WriteLn('*** Ошибка: неизвестный характер.')
  else if (c=1) and A and not B  { - послушный и осторожный }
    or (c=2) and A               { - послушный, но беспечный }
    or (c=3) and not A and not B { - хитрый вольнодумец }
    or (c=4) and not A           { - непримиримый вольнодумец }
    or (c=5) and not A and B     { - экстремал }
    or (c=6)                     { - безбашенный }
  then Writeln('Вперед!')
  else Writeln('Стой!');
end;
1
6 / 6 / 2
Регистрация: 02.06.2012
Сообщений: 209
12.09.2014, 05:30  [ТС]
Цитата Сообщение от bormant Посмотреть сообщение
демонстрирует неумение работать с логическими переменными, достаточно
Pascal
1
If a and not b Then ...
Да я в курсе что можно так логические переменные выражать, и что так считается правильнее и рациональнее, но просто лично для себя мне как-то это не очень удобно, мне как-то на вид намного удобнее писать A = True, B = False...
С методом записи логических переменных в таком виде, в каком указали вы, я прекрасно знаком)) ну а что касается всей задачи в целом, я ещё новичок, не всегда мне удаётся подобрать самое рациональное решение, опыта мало в этих делах, учусь, поэтому и пишу здесь, чтоб быстрее научиться, критике всегда рад)) это опыт как никак) ну а так по сути само решение у меня верное?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
12.09.2014, 08:51
Mix@siK,
так вы ж его проверили, ответы правильные выдаёт, неправильных ответов не выдаёт, значит верное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.09.2014, 08:51
Помогаю со студенческими работами здесь

Верно ли решил ?
Показать что , если два ряда \sum_{n=1}^{\infty } {a}_{n}, \sum_{n=1}^{\infty } {b}_{n} с положительными членами таковы, что {a}_{n}\sim...

Верно ли я решил?
Вероятность работы автомата в некоторый момент времени равна p. Имеется k независимо работающих автоматов. Найти: 1)Вероятность того,...

Проверить верно ли решил
Напряжение на обкладках конденсатора в колебательном контуре изменяется по закону U = 10cos 10^4t (В). Емкость конденсатора 10 мкФ. Найти...

Проверить верно ли решил
Сила тока в проводнике сопротивлением R=12 Ом равномерно убывает от I0=5 А до I=0 в течение времени τ=10 с. Какое количество теплоты Q...

Проверить верно ли решил
Гамма-фотон с энергией 1,02 МэВ в результате комптоновского рассеяния на свободном электроне отклонился от первоначального направления на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru