Мое предложение - в массиве 20 на 20 храниться структура struct cell { int rabbit; // кол-во зайцев int* wolfs; // очки волков int* she_wolfs;// очки волчиц } очки предлагаю хранить умноженными на 10 во избежания проблем вещественным сравнением. Но есть одна проблема с задачей в целом. Это порядок ходов. Если в двух соседних клетках находятся заяц и волк, и первый ходит заяц, то волк может остаться голодным. Если же первый ходит волк - он то зайца может скушать. Поэтому, я предлагаю, что вначале ходят все зайцы, потом все волки - по очереди.
Pascal
var n: integer;
a: 0..9; b: boolean;
begin
write('Введите число N: ');
readln(n);
if n>0 then
begin
write('Введите цифру A: ');
readln(a);
if (a>=0) and (a<=9) then
begin
while (n>1) do
begin
if a=n mod 10 then begin b:=true; break; end else b:=false;
n:=n div 10;
end;
writeln(b);
end else writeln('Введите цифру A от 0 до 9');
end else writeln('Введите другое число, больше 0!');
end.
===== PascalABC.NET =====
begin
foreach var n in Range(100, 999) do
if n mod 81 = 0 then
Print(n)
end.
⌐(x ⋀ y) ⋁ z (см.картинку)
При составлении таблиц истинности необходимо:
1. Выяснить количество строк в таблице (2^n, где n – количество переменных, + 1(строка под заголовки)).
Здесь 3 переменные: x, y и z
2^3 = 8
8 + 1 = 9 строк
2. Выяснить количество столбцов (количество переменных + количество операций).
Здесь 3 операции:
1. x ⋀ y (промежуточная логическая формула)
2. ⌐(x ⋀ y) (промежуточная логическая формула)
3. ⌐(x ⋀ y) ⋁ z (формула)
Здесь 3 переменные: x, y и z
3 + 3 = 6 столбцов
3. Установить последовательность выполнения логических операций.
Порядок выполнения логических операций в сложном логическом выражении:
1. Инверсия
2. Конъюнкция
3. Дизъюнкция
4. Импликация
5. Эквивалентность
6. Для изменения указанного порядка выполнения операций используются скобки
Здесь порядок выполнения операций:
1. x ⋀ y
2. ⌐(x ⋀ y)
3. ⌐(x ⋀ y) ⋁ z
4. Построить таблицу, указывая названия столбцов и возможные наборы значений исходных логических переменных.
5. Заполнить таблицу истинности по столбцам.
Var a: array[1..10] of integer;
<span> b: array[1..10] of real;
</span><span> i,n: integer;
</span><span> s: real;
</span><span>begin
</span><span> s:=0; n:=0;
</span><span> write('массив a: ');
</span><span> for i:=1 to 10 do
</span><span> begin
</span><span> read(a[i]);
</span><span> if a[i]<0 then
</span><span> begin
</span><span> s:=s+a[i];
</span><span> n:=n+1;
</span><span> end;
</span><span> write(a[i],' ');
</span><span> end;
</span><span> s:=s/n;
</span><span> writeln;
</span><span> writeln('среднее арифметическое отрицательных: ',s);
</span><span> writeln('количество отрицательных: ',n);
</span><span> write('массив b: ');
</span><span> for i:=1 to 10 do
</span><span> begin
</span><span> if a[i]<0 then b[i]:=s
</span><span> else b[i]:=a[i];
</span><span> write(b[i]:7:3);
</span><span> end;
</span><span>end.
</span>массив a: 2 2 -3 1 -5 -6 -5 9 -7 5
<span>среднее арифметическое отрицательных: -5.2
</span><span>количество отрицательных: 5
</span><span>массив b: 2.000 2.000 -5.200 1.000 -5.200 -5.200 -5.200 9.000 -5.200</span><span> 5.000
</span><span>
</span>