В неделе семь дней, поэтому решение выполняется на основе нахождения остатка целочисленного деления от номера дня на 7. Такой остаток находится в пределах от 0 до 6, а для нашей нумерации нужны значения от 1 до 7, поэтому полученный остаток будем увеличивать на единицу. Если 1 января вторник, то есть день недели с номером 2, то первым понедельником будет 7 января, вторым 14 января и т.д. 1 января (k=1) при делении на 7 даст в остатке 1 и при сдвиге остатка на 1 (см. выше), получим 2 (вторник). 7 января даст остаток 0 и после сдвига получим 1 (понедельник), что и требовалось.
<u>1. Современное короткое, эффективное, но требующее определенных знаний решение</u>
<u>PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018</u>
<u>Внимание! Если программа не работает, обновите версию!</u>
begin
var d:='Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье'.ToWords;
Writeln(d[ReadInteger('Введите номер дня') mod 7])
end.
<u>Примеры</u>
Введите номер дня 215
Суббота
Введите номер дня 14
Понедельник
<u>2. Более близкое к приведенному выше алгоритму решение</u>
begin
var n:=ReadInteger('Введите номер дня');
n:=n mod 7+1;
case n of
0:Writeln('Воскресенье');
1:Writeln('Понедельник');
2:Writeln('Вторник');
3:Writeln('Среда');
4:Writeln('Четверг');
5:Writeln('Пятница');
6:Writeln('Суббота')
end
end.
<u>3. Типовое школьное решение</u>
var
n:integer;
begin
Write('Введите номер дня');
Read(n);
n:=n mod 7+1;
case n of
0:Writeln('Воскресенье');
1:Writeln('Понедельник');
2:Writeln('Вторник');
3:Writeln('Среда');
4:Writeln('Четверг');
5:Writeln('Пятница');
6:Writeln('Суббота')
end
end.
Uses GraphABC;
Begin
SetWindowSize(600, 400);
SetPenWidth(3);
SetBrushColor(clYellow);
Rectangle(40,160,280,380);
SetBrushColor(clSkyBlue);
Rectangle(80,200,240,300);
Line(80,240,240,240);
Line(160,240,160,300);
SetBrushColor(clGreen);
Rectangle(280,320,380,380);
Rectangle(380,340,460,380);
Line(40,160,160,20);
Line(160,20,280,160);
FloodFill(160,80,clMaroon);
SetBrushColor(clBlue);
Circle(160,100,30);
Line(130,100,190,100);
Line(160,70,160,130);
End.
Результат выполнения на рисунке.
Переименовать, перемистить, удалить,сменить значок......
Ответ:
var
A: array [1..10] of integer;
i : integer;
temp : integer;
begin
Randomize;
for i := 1 to 10 do
begin
A[i] := random(30);
Write(A[i], ' ');
end;
Writeln;
i := 1;
while i < 10 do
begin
temp := A[i];
A[i] := A[i + 1];
A[i + 1] := temp;
inc(i, 2);
end;
Writeln('Новый массив: ');
for i := 1 to 10 do Write(A[i], ' ');
end.
Объяснение:
Вот смотри, из большего нужно вычесть меньшего , т.е 1)114 - 66 = 48
Далее 2)66 - 48=18;3)48-18=30;4)30-18=12;5)18-12=6;6)12-6=6
Итого 6 шагов.