1. Постройте таблицы истинности для логических выражений: а) A & B ∨ ¬ A & B
б) (A ∨ B) & (¬ A ∨ B)
Раздел 3.
1. Составить линейный алгоритм для примера a+b-c=x. Составить таблицу трассировки.
2. Составить алгоритм с условием и построить таблицу трассировки.
3. Составить циклический алгоритм с условием и построить таблицу трассировки. Вводятся две переменные x,y. Переменным r присваивается значение X. Переменной q присваивается значение 0.
Происходит проверка цикла с условием. ЕСЛИ r>=y, то r:=r-y, q:=q+1, иначе вывести значение r и q.
С решением
Код для питона:
def solve(a):
def count(r,c):
return a[r][c] if r >= 0 and r < len(a) and c >= 0 and c < len(a[r]) and a[r][c] != None else 0
a[0][0] = 1
for step in range(1, len(a) + len(a[0]) - 1):
row, col = (0, step) if step < len(a[0]) else (step - len(a[0]) + 1, len(a[0]) - 1)
while col >= 0 and row < len(a):
if a[row][col] != None:
a[row][col] = count(row-1, col) + count(row, col-1)
row, col = row+1, col-1
return a[-1][-1]
Поле задаём в виде списка списков:
field = [
[0,0,0,0,0,None,None,None],
[0,0,None,0,0,0,0,None],
[0,0,0,0,0,0,0,0],
[0,None,0,0,0,0,0,0],
[0,0,0,0,None,0,0,0],
[0,0,0,0,0,0,0,0],
[None,None,0,0,0,None,0,0],
[None,None,0,0,0,0,0,0]
]
Объяснение:
Если нужно просто решение, то я приложил картинку
#include <iostream>
using namespace std;
int main()
{
int i,n,n2=0,n3,digit;
cin >> n; //Вводим число. Может быть отрицательным.
n3 = abs(n); //Для удаления цифр нужно положительное число
i = 1; //Переменная для количества десятков.
while(n3>0) { //Условия для выполнения цикла
digit = n3 % 10; //Получаем последнюю цифру
n3 = n3 / 10; //Уменьшаем число
if(digit!=3 && digit!=6){ //Проверка цифры
n2 = n2 + digit * i; //Создаем число умножая на десятки
i = i * 10; //Добавляем десятки
}
}
cout << ((n<0)?-n2:n2); //Вывод результата с добавление знака
}
Объяснение:
Есть цикл While