F - ответ
1)
A B AvB F
0 0 0 0
1 0 1 1
0 1 1 1
1 1 1 1
2)
A B (отриц)B Bv(отриц)B F
0 0 1 1 1
0 1 0 1 1
1 0 1 1 1
1 1 0 1 1
3)
A B C AvBvC F
0 0 0 0 0
0 0 1 1 1
0 1 0 1 1
0 1 1 1 1
1 0 0 1 1
1 0 1 1 1
1 1 0 1 1
1 1 1 1 1
4)
A B C (отриц)C AvBv(отриц)C F
0 0 0 1 1 0
0 0 1 0 0 1
0 1 0 1 1 0
0 1 1 0 1 0
1 0 0 1 1 0
1 0 1 0 1 0
1 1 0 1 1 0
1 1 1 0 1 0
Введите смещение: 1
Делу время - потехе час | Еёмф гсёна - рпуёцё шбт
С Новым годом | Т Опгьн дпепн
Первое сентября | Рёсгпё тёоуавса
Исходный код на Python3:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
TL2I = dict(zip("АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ",range(34)))
I2TL = dict(zip(range(34),"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"))
SL2I = dict(zip("абвгдеёжзийклмнопрстуфхцчшщъыьэюя",range(34)))
I2SL = dict(zip(range(34),"абвгдеёжзийклмнопрстуфхцчшщъыьэюя"))
phrases = ('Делу время - потехе час', 'С Новым годом', 'Первое сентября')
key = int(input("Введите смещение: "))
for phrase in phrases:
ciphered = ''
for c in phrase:
if not c.isalpha():
ciphered += c
if c.islower():
ciphered += I2SL[ (SL2I[c] + key) % 33 ]
if c.isupper():
ciphered += I2TL[ (TL2I[c] + key) % 33 ]
print("{} | {}".format(phrase, ciphered))
Города:Сочи, Уфа,Тула,Баку.
Реки:Урал,Ока,Кама,Волга.
Слова: маска корт будка лавка губы лесок палка клан доска цвет колено
При использовании 64-символьного алфавита на 1 символ необходимо log(2)64=6 бит.
На весь учебник:
80*512*6 бит=80*512*6/8 байт = 10*512*6/1024 Кбайт = 30 Кбайт
Немного теории:
Любой доступ к элементу массива, осуществляемый с помощью операции индексирования может быть осуществлен при помощи указателей.
Имя массива хранит адрес его нулевого элемента. Поэтому адрес любого i элемента массива можно представить как (x+i), где x - указатель на первый элемент массива. А его значение как *(x+i)
Подобные операции верны для любого типа и размера массивом, так как при прибавлении к указателю целого числа, он "сдвигается" не на i байтов, а на i элементов этого типа.
int a[]={7,8,9}; - инициализация массива.
int b*=a - в этой строчке ошибка. Правильно: int *b=a; - объявляем указатель на нулевой элемент массива.
b++; - операция постфиксного инкремента(так как значение b в этой строчке нигде не используется, то данное выражение равносильно b=b+1). Теперь в b находится адрес первого элемента массива.
*(b+1)=*b - присваиваем второму элементу массива значение первого элемента(эта запись равносильна a[2]=a[1])
b[1] равносильно a[2] (не забываем, что в b[0] теперь адрес первого элемента, а не в нулевого. Адрес нулевого элемента будет в b[-1], а второго элемента - в b[1]).
В итоге значение b[1] равно 8
Ответ: 8