Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
20 / 19 / 14
Регистрация: 25.03.2015
Сообщений: 68

Неправильно работает if

23.08.2015, 14:48. Показов 622. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В недоработанной программе:
Если на строке 60 функция SetStats() получает значение CaseInc>0, условие на строке 89 не должно отображать текст пока IncNeeded>incisions (помимо прочих условий), происходит наоборот. Когда после IF ставлю not? всё работает как надо. Почему?
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Program Surgery;
uses CRT;
var
 CaseInc,CaseTemp,CaseBleed,CaseFrac,CaseText: integer; // SetStats procedure variables
 tool,temp,incisions,fractures,bleeding,status,IncNeeded: integer; // Direct stats
 FixLocked,Fixed: boolean; // Booleans related to Fixing it
 problem,outcome: string; // Stat texts
{SetStats: fast stat setting for cases}
Procedure SetStats(CaseInc,CaseTemp,CaseBleed,CaseFrac: integer;CaseText: string);
 begin
  if CaseInc>0 then begin
   IncNeeded:=CaseInc;
   Fixed:=False;
   end;
  temp:=CaseTemp;
  bleeding:=CaseBleed;
  fractures:=CaseFrac;
  problem:=CaseText
 end;
{StrStatus: turning Status integer value into string value}
Function StrStatus(status: integer): string;
 begin
  case status of
   0: StrStatus:='Awake';
   1,2: StrStatus:='Coming to';
   3..7: StrStatus:='Unconcious';
   8..10: StrStatus:='Near coma';
  end;
 end;
{StrBleeding: turning Bleeding integer value into string value}
Function StrBleeding(bleeding: integer): string;
 begin
  StrBleeding:='Patient is losing blood';
  case bleeding of
  0: StrBleeding:='';
  1: StrBleeding+=' slowly';
  2..5: StrBleeding+='';
  else StrBleeding+=' fast';
  end;
 end;
{START OF MAIN PROGRAM}
begin
 {Default Stats}
 incisions:=0;
 status:=0;
 bleeding:=0;
 fractures:=0;
 temp:=98;
 Fixed:=True;
 FixLocked:=True;
 {Intro & Credits}
 writeln('Text.');
 writeln('Text.');
 writeln('Text.');
 writeln;
 writeln('Press any key to continue...');
 ReadKey;
 ClrScr;
 {Surgery Selection}
 case random(10) of
 {Reminder: SetStats(needed incisions, base temp, base bleeding, base fractures, text}
  0: SetStats(0,102,0,0,'Patient is showing signs of bird flu');
  1: SetStats(0,105,0,0,'Patient is showing signs of monkey flu');
  2: SetStats(0,108,0,0,'Patient is showing signs of turtle flu');
  3: SetStats(0,98,1,1,'Patient broke his arm');
  4: SetStats(0,98,1,2,'Patient broke his leg');
  5: SetStats(1,98,0,0,'Patient wants a nose job');
  6: SetStats(1,98,0,0,'Patient has a lung tumor');
  7: SetStats(3,98,0,0,'Patient had a heart attack');
  8: SetStats(5,98,0,0,'Patient has a brain tumor');
  9: SetStats(2,103,0,0,'Patient is suffering from kidney failure');
  10: SetStats(3,105,0,0,'Patient has a broken spine');
  11: SetStats(3,103,0,0,'Patient is suffering from liver infection');
  end;
 {Surgery}
 repeat
  {Step 1: Status Screen}
  writeln(problem);
  writeln('Pulse: ???   Status: ',StrStatus(status));
  writeln('Temp: ',temp,'   Operation site: ???');
  write('Incisions: ',incisions);
  if fractures>0 then writeln('   Fractures: ',fractures) else writeln;
  if bleeding>0 then writeln(StrBleeding(bleeding));
  writeln(outcome);
  writeln;
  {Step 2: Asking and receiving input, changing stats}
  writeln('Antiseptic: 1   Anesthetic: 2   Antibiotics: 3   Splint: 4');
    write('Scalpel: 5      Stitches: 6     Sponge: 7        ');
  if (FixLocked=False and Fixed=False) then writeln('Fix it: 8') else writeln;
  write('Choose tool by its number: ');
  readln(tool);
  case tool of
   1: ; // WIP
   2: status+=7;
   3: temp-=random(1,3);
   4: fractures-=1;
   5: incisions+=1;
   6: begin if incisions>0 then incisions-=1;
      bleeding-=1; end;
   7: ; // WIP
   8: Fixed:=True;
  end;
  ClrScr;
  {Step 3: Checking for crucial changes}
  if (FixLocked=True and Fixed=False) and (IncNeeded<=incisions) then FixLocked:=False;
 until
  ((temp<100) and (fractures=0) and (incisions=0) and (bleeding=0) and Fixed=True)
  or ((temp>=110) or (status>11));
 if ((temp<110) and (fractures=0) and (incisions=0) and (bleeding=0) and Fixed=True) then
  writeln('You saved your patient!') else
  writeln('You failed to save your patient!');
 ReadKey;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.08.2015, 14:48
Ответы с готовыми решениями:

Проверьте задачку по циклам, неправильно работает. [думаю что неправильно]
Спасибо что решили зайти. Задание выгладит так: http://*******/PW95p А результат выплнения: http://*******/KwhuS #include...

Неправильно работает цикл for, и функции работают неправильно
1) Неправильно работает цикл for(k=0...). Входит только 1 раз, дальше вылетает. Делал пошаговую отладку на проверку значения k. Выдаёт...

Цикл работает неправильно, в то время как POST работает
Всем привет! Я хотел написать под php скрипт с авторизацией, брут, на своем сайте(подбор пароля). Написал код на загрузку словаря +...

9
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.08.2015, 15:02
Pascal
1
case random(10) of //от 0 до 9
тогда откуда
Pascal
1
2
10: SetStats(3,105,0,0,'Patient has a broken spine');
11: SetStats(3,103,0,0,'Patient is suffering from liver infection');
0
20 / 19 / 14
Регистрация: 25.03.2015
Сообщений: 68
23.08.2015, 15:03  [ТС]
Забыл обновить...
Тем не менее, в других кейсах проблема имеется.
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.08.2015, 15:07
строка 89
Pascal
1
if (FixLocked=False) and (Fixed=False) then writeln('Fix it: 8') else writeln;
0
20 / 19 / 14
Регистрация: 25.03.2015
Сообщений: 68
23.08.2015, 15:25  [ТС]
Теперь всё правильно.
Спасибо.
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
26.08.2015, 12:32
Переменные и без того булевы, что их с false сравнивать. Не по-индусски должно быть так:
Pascal
1
if not FixLocked and not Fixed then writeln('Fix it: 8') else writeln;
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
26.08.2015, 20:58
Черкнём таблицу истинности
FixLocked - A, Fixed - B
Code
1
2
3
4
5
6
A | B | C
----------
0 | 0 | 1
1 | 0 | 0
0 | 1 | 0
1 | 1 | 0
т.е. C = !(A & B)
Так что можно ещё вот так
Pascal
1
if not (FixLocked and Fixed) then writeln('Fix it: 8') else writeln;
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,411
26.08.2015, 22:44
tezaurismosis, поправочка, Вы неверно применили закон Де-Моргана. Верно будет так:
Pascal
1
if not (FixLocked or Fixed) then writeln('Fix it: 8') else writeln;
1
26.08.2015, 23:24

Не по теме:

Cyborg Drone, праздники влияют. А вне праздников ещё что-нибудь влияет :D

0
12 / 12 / 10
Регистрация: 24.06.2015
Сообщений: 83
26.08.2015, 23:34
Не лучше ли тогда так?
Pascal
1
if (FixLocked or Fixed) then writeln else writeln('Fix it: 8');
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.08.2015, 23:34
Помогаю со студенческими работами здесь

Не работает Wi-Fi, клавиатура работает неправильно
ребят такая фигня , уже на двух разных ноутбуках заметил , не правильно печатает буквы с клавы и не работает вайфай , это точно ос моросит...

неправильно работает
(*Программа 4.5*) var A, B: integer; Y: integer; X1, X2, Z1, Z2: real; (*координаты прямоугольника*) ...

Неправильно работает if
Есть задача Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел...

Неправильно работает if
Добрый день! столкнулся с проблемой, может кто нибудь знает что делать? условие оператора if не верное, но программа считает что...

работает неправильно
uses crt; Var x:byte; a:string; i:integer; begin write('predlozhenie: '); readln(a); while pos(a,' ')&lt;&gt;0 do ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru