Известно, что 31 января 2011 года приходится на понедельник. Какие значения должны быть присвоены литерной переменной у в алгор
итме, определяющем день недели для любого числа (chislo) января 2011 года? С объяснением. chislo := chislo mod 7 если chislo=3 то y:= " если chislo=4 то y:= " если chislo=5 то y:= " если chislo=6 то y:= " если chislo=0 то y:= " если chislo=1 то y:= " если chislo=2 то y:= "
Допустим, мы ведем счет дней недели с воскресенья и присваиваем дням такие номера: 0- Вс, 1- Пн, 2- Вт, 3- Ср, 4- Чт, 5- Пт, 6- Сб. Определим, когда в январе было первое Вс. Если 31 был Пн, то 4 недели назад, т.е. 31-28=3 числа тоже был Пн. А Вс было перед Пн, т.е. 2 января. Числа от 0 до 6 - это остатки целочисленного деления на 7. Получается, что остаток деления числа 2 на 7, должен привести нас к нулю. А он равен двум. <u>Идея:</u> вычтем из остатка 2, чтобы получился ноль. Идея хороша для остатка 2, 3, 4, 5, и 6. Она даст нам значения 0, 1, 2, 3 и 4. А вот для остатков 0 и 1, она даст -2 и -1, что нехорошо. Внесем корректировку. если получилось отрицательное значение, увеличим его на 7. <u>Проверим ,будет ли это работать.</u> 1 января - Сб (номер дня 6) алгоритм дает 1-2 = -1 и +7 = 6 - верно 2 января - Вс (номер дня 0) алгоритм дает 2-2 = 0 - верно 3 января - Пн (номер дня 1) алгоритм дает 3-2 = 1 - верно 4 января - Вт (номер дня 2) алгоритм дает 4-2 = 2 - верно 5 января - Ср (номер дня 3) алгоритм дает 5-2 - 3 - верно 6 января - Чт (номер дня 4) алгоритм дает 6-2 = 4 - верно 7 января - Пт (номер дня 5) алгоритм дает 0-2 = -2 и +7 = 5 - верно 8 января - Сб (номер дня 6) алгоритм дает 1-2 = -1 и +7 = 6 - верно 9 января - Вс (номер дня 0) алгоритм дает 2-2 = 0 - верно
Все работает.
<em>// PascalABC.NET 3.3, сборка 1625 от 17.01.2018</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
begin var chislo:=ReadInteger('Номер дня в январе 2011 года:'); chislo:=chislo mod 7-2; if chislo<0 then chislo:=chislo+7; var y:string; case chislo of 0:y:='Воскресенье'; 1:y:='Понедельник'; 2:y:='Вторник'; 3:y:='Среда'; 4:y:='Четверг'; 5:y:='Пятница'; 6:y:='Суббота' end; Writeln('Это ',y) end.
<u>Примеры</u> Номер дня в январе 2011 года: 31 Это Понедельник
Объем аудиофайла расчитывается так: <em><u> I = k*r*f*t ,</u> </em> где k - количество каналов записи (моно - 1, стерео - 2); f - частота дискретизации (кол-во отсчетов, запоминаемых за 1 секунду, измеряется в Гц); r - глубина кодирования (сколько бит приходится на 1 отсчет); t - время звучания итак, нам дано: k = 1 т.к. у нас моноаудиофайл I = 30 мб =30*1024*1024*8 бит = 3*10*2²³ бит r = 16 бит = 2⁴ бит, f = 48 кГц = 48 000 Гц = 3*2⁴*10³ Гц, нужно найти время t. из формулы <em><u>I = k*r*f*t </u></em> выразим t t = I/(k*r*f) t = (3*10*2²³)/(1*2⁴*3*2⁴*10³)= (3*10*2²³)/(2⁸*3*10³) = 2¹⁵/10²= 327,68 с. результат подозрительный, конечно...