===== С++ 17 =====
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Количество учеников: ";
cin >> n;
srand(time(NULL));
int m1 = rand() % n + 1, m2 = rand() % n + 1;
while(m2 == m1)
m2 = rand() % n + 1;
cout << m1 << " " << m2;
return 0;
}
10. В кодировке ASCII, первые 128 символов - символы английского алфавита и цифры. Для кодировки одного символа применяют один байт. Следовательно, текст из 30 символов будет содержать 30 байт информации.
9. Д - Б - Е - Г - В - А - Ж
8. А - Ж - Е - Б - Д - В - Г
7. Составим простую пропорцию:
3840 - 30
5760 - х
И находим х: 5760*30/3840 = 45 секунд
6. Для удобства, переведем 8 минут в секунды и получим 480 секунд.
Опять-таки, делаем пропорцию:
25 - 480
х - 2400
И находим из пропорции х: 2400*25/480 = 125 МБ.
5. Переведем 1101 из двоичной в восьмеричную систему. Для этого разобьем число на триады, а недостающие разряды заполнил нулями слева:
001 101. Теперь, переведем каждую триаду в соответствующую ей цифру 8-ной системы: 001 - 1; 101 - 5. Получаем число 15 в восьмеричной системе. И выполняем простое сложение: 23+15 = 38 в восьмеричной системе.
Здесь переведем числа из 16-ной системы и 8-ной в 2-ную.
Алгоритм перевода схож с тем, что применялся выше, только для 16-ной системы мы заменяем тетрадами:
A - 1010; Е - 1110. Значит, AE в 16-ной системе = 10101110 в двоичной
1 - 0001; 2 - 0010; 7 - 0111. Значит, 127 в 8-ной = 000100100111 в двоичной.
Для сложения, восстановим разность разрядов в числах, добавив необходимое количество 0 к первому числу, а именно 4 нуля.
И после сложения получаем:
000010101110 + 000100100111 = 000111010101 в двоичной системе.
4. Для перевода двоичной системы в 10, каждую цифру числа в 12-ной системе умножим на 2 в степени номера разряда и сложим получившиеся значения. Т.е.:
!!!Разряды начинаются слева с 0!!!
10111 = 1*2^4 + 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 16 + 0 + 4 + 2 + 1 = 23 в десятичной.
С 8-ной системой ситуация аналогичная, только вместо 2 умножаем на 8:
25 = 2*8^1 + 5*8^0 = 16 + 5 = 21 в десятичной
В 16 аналогично, лишь умножаем на 16 в степени:
FC = 15*16^1 + 12*16^0 = 240 + 12 = 252 в десятеричной (F = 15; C = 12 )
3. Для перевода, делим число на 16. Частное запоминаем для следующего деления, а остаток записываем в меньший бит 16-чного числа:
430 : 16 = 26. Остаток: 430 - 416 = 14 в десятичной = E в 16-чной.
26 : 16 = 1. Остаток: 26 - 16 = 10 в 10-ной = A в 16-ной.
1:16 = 0. Остаток 1 записываем в 16-ное число и получаем:
430 в 10-ной = 1АЕ в 16-ной.
2. Все аналогично, лишь делим на 8:
129 : 8 = 16. Остаток: 129 - 128 = 1 в 10-ной = 1 в 8-ной системе.
16 : 8 = 2. Остаток: 16-16 = 0.
2 : 8 = 0. Остаток 2 в 10-ной системе = 2 в 8-ной системе. Получаем число:
129 в 10-ной = 201 в 8-ной системе.
1. Аналогично. Только делим на 2:
57 : 2 = 28. Остаток: 57 - 56 = 1. Записываем его в 2-ное число.
28 : 2 = 14. Остаток: 0. Записываем в 2-ное число
14 : 2 = 7. Остаток: 0. Записываем
7 : 2 = 3. Остаток: 1. Записываем в 2-ное число.
3 : 2 = 1. Остаток: 1. Опять же, записываем
1 : 2 = 0. Остаток: 1. Записываем в 2-ное число.
В результате, получаем:
57 в 10-ной системе = 111001 в двоичной системе.
В кодировке КОИ-8 один символ занимает 8 бит.
Значит, одна строчка на странице будет занимать: 32*8=256 бит. Тогда одна страница будет весить: 256*60=15.360 бит.Теперь вычислим сколько бит занимает вся книга. Для этого 128 страниц умножим на 15.360, получим 1.966.080 бит. Остается только перевести в килобайты. Для удобства мы переконвертируем сначала в байты: 1.966.080 / 8 = 245.760 байт
Теперь в килобайты: 245.760 / 1.000 = <u>245 Килобайт</u>
Вводы и выводы бывают нескольких "видов". Есть простой, к примеру, и с переводом строки. Они различаются тем, как мы будем читать. read(тут должна быть переменная, которую вы считываете). Тут считывается что-то, и затем можно дальше продолжать работать. А readln(тут должна быть переменная, которую вы считываете) уже после считывания переходит на следующую строку. Можно так же подключить файл. Это происходит посредством команд. assign(название текстовой переменной, затем через запятую тут должно быть название файла или путь к нему в кавычках). Затем надо сделать reset(название переменной, с которй связан был ввод); Это простые примеры. Теперь вывод. Тут в принципе, то же самое. write(переменная или текст в кавычках) просто выводит после места, где мы на вводе\выводе остановились, пишет то, что нужно. А есть writeln(). он делает то же самое, затем переходит на следующую строку. Обьясним в примерах. Различие write и writeln
Есть два куска программы.
a:=10;
b:=20;
write(a);
write(b);
И второй.
a:=10;
b:=20;
writeln(a);
writeln(b);
Они различаются лишь четырьмя буквами, но вывод первой будет
1020
А второй
10
20
Что бы, кстати, при первом способе цифры не слипались, можно воспользоваться текстом. Изменим строчку
write(a); на строчку write(a,' '); и тогда вывод будет таким
10 20
Файловый вывод подключается так же. Однако есть различие. Там надо использовать вместо reset - rewrite и все. Ну и естественно, не путаем две переменные ввода и вывода. Вот простые примеры