Одна из основных операций с числами – их сравнение. Мы подозреваем, что вы в совершенстве владеете этой операцией и можете сравнивать любые числа, в том числе и целые. В данной задаче необходимо сравнить два целых числа. Решите на python 3.7
В неделе семь дней, поэтому решение выполняется на основе нахождения остатка целочисленного деления от номера дня на 7. Такой остаток находится в пределах от 0 до 6, а для нашей нумерации нужны значения от 1 до 7, поэтому полученный остаток будем увеличивать на единицу. Если 1 января вторник, то есть день недели с номером 2, то первым понедельником будет 7 января, вторым 14 января и т.д. 1 января (k=1) при делении на 7 даст в остатке 1 и при сдвиге остатка на 1 (см. выше), получим 2 (вторник). 7 января даст остаток 0 и после сдвига получим 1 (понедельник), что и требовалось.
1. Современное короткое, эффективное, но требующее определенных знаний решение
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
begin var d:='Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье'.ToWords; Writeln(d[ReadInteger('Введите номер дня') mod 7]) end.
Примеры Введите номер дня 215 Суббота
Введите номер дня 14 Понедельник
2. Более близкое к приведенному выше алгоритму решение
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.
3. Типовое школьное решение
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.
{ процедуру с параметрами, обеспечивающую перестановку двух заданных строк матрицы написан на PascalABC.NET но должно работать в TurboPascal }
PROGRAM A5; const rows = 5; cols = 8;
type matrix = array [1..rows,1..cols] of integer;
var AR : matrix;// рабочая матрица i,j:byte;// счетчики k1,k2:byte;// номера строк
// обмен строк матрицы местами procedure SwapRows(row1:byte; row2:byte; var m:matrix); var i,j:byte; ax:integer; begin for i:=1 to cols do begin ax := m[row1,i]; m[row1,i] := m[row2,i]; m[row2,i] := ax; end; end;
// выравнивание по правому краю - пробелы перед числом function trailSpace(num:byte; len:byte):string; var s:string; i:byte; begin s := ''+num; i := s.Length; while (i<len) do begin s := ' ' + s; i := i+1; end; trailSpace := s; end;
// вывод матрицы на экран procedure displayMatrix(var m:matrix); var i,j:byte; begin for i:=1 to rows do begin write('Строка ', i, ': '); for j:=1 to cols do begin write(); write(trailSpace(AR[i,j], 4) ); end; writeln(' '); end; end;
BEGIN // заполнение массива и вывод его на экран randomize(); for i:=1 to rows do for j:=1 to cols do AR[i,j] := random(256); writeln('Начальный массив'); displayMatrix(AR);
// ввод данных writeln(' '); write('введите номер строк которые следует поменять местами: '); readln(k1, k2);
if (k1<=rows) and (k2<=rows) then begin SwapRows(k1, k2, AR); writeln('Результат'); displayMatrix(AR); end else writeln('Номера строк должны быть меньше ', rows); END.
1. Современное короткое, эффективное, но требующее определенных знаний решение
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!
begin
var d:='Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье'.ToWords;
Writeln(d[ReadInteger('Введите номер дня') mod 7])
end.
Примеры
Введите номер дня 215
Суббота
Введите номер дня 14
Понедельник
2. Более близкое к приведенному выше алгоритму решение
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.
3. Типовое школьное решение
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.
процедуру с параметрами, обеспечивающую перестановку двух заданных строк матрицы
написан на PascalABC.NET
но должно работать в TurboPascal
}
PROGRAM A5;
const
rows = 5;
cols = 8;
type
matrix = array [1..rows,1..cols] of integer;
var
AR : matrix;// рабочая матрица
i,j:byte;// счетчики
k1,k2:byte;// номера строк
// обмен строк матрицы местами
procedure SwapRows(row1:byte; row2:byte; var m:matrix);
var i,j:byte;
ax:integer;
begin
for i:=1 to cols do begin
ax := m[row1,i];
m[row1,i] := m[row2,i];
m[row2,i] := ax;
end;
end;
// выравнивание по правому краю - пробелы перед числом
function trailSpace(num:byte; len:byte):string;
var s:string;
i:byte;
begin
s := ''+num;
i := s.Length;
while (i<len) do begin
s := ' ' + s;
i := i+1;
end;
trailSpace := s;
end;
// вывод матрицы на экран
procedure displayMatrix(var m:matrix);
var i,j:byte;
begin
for i:=1 to rows do begin
write('Строка ', i, ': ');
for j:=1 to cols do begin
write();
write(trailSpace(AR[i,j], 4) );
end;
writeln(' ');
end;
end;
BEGIN
// заполнение массива и вывод его на экран
randomize();
for i:=1 to rows do
for j:=1 to cols do
AR[i,j] := random(256);
writeln('Начальный массив');
displayMatrix(AR);
// ввод данных
writeln(' ');
write('введите номер строк которые следует поменять местами: ');
readln(k1, k2);
if (k1<=rows) and (k2<=rows) then begin
SwapRows(k1, k2, AR);
writeln('Результат');
displayMatrix(AR);
end else
writeln('Номера строк должны быть меньше ', rows);
END.