Книга программиста/Задачи на ввод и вывод: различия между версиями

Содержимое удалено Содержимое добавлено
м орфография
м <source> -> <syntaxhighlight> (phab:T237267)
Строка 5:
Вывести 2, если пользователь ввел 1.
Вывести 1, если пользователь ввел 2.
<sourcesyntaxhighlight lang="pascal">
begin
Writeln(3 - ReadlnInteger());
end.
</syntaxhighlight>
</source>
=Вывод диапазона чисел=
<sourcesyntaxhighlight lang="pascal">
begin
for var i := ReadlnInteger('A:') to ReadlnInteger('B:') do WriteLn(i);
end.
</syntaxhighlight>
</source>
Сначала установится последнее значение счётчика цикла, затем - первое.
=Сравнение площадей кругов=
<sourcesyntaxhighlight lang="pascal">
function Square(r: real) := Pi * Sqr(r);
 
Строка 24:
WritelnFormat('Первый круг {0} второго.', Square(ReadlnInteger('R1:')) > Square(ReadlnInteger('R2:')) ? 'больше' : 'меньше');
end.
</syntaxhighlight>
</source>
 
=Вывод диапазона чисел (вариант 2)=
<sourcesyntaxhighlight lang="pascal">
var
N: integer;
Строка 35:
for N := 1 to N do WriteLn(N);
end.
</syntaxhighlight>
</source>
Сначала вычислится последнее значение счётчика, которое примет значение 5. Затем - первое, которое будет иметь значение 1.
 
=Выражение с модулем=
<sourcesyntaxhighlight lang="pascal">
begin
WritelnFormat('|ax - b| = {0}.', Abs((ReadlnReal('A:') * ReadlnReal('X:')) - ReadlnReal('B:')));
end.
</syntaxhighlight>
</source>
=Максимум из трех чисел=
<sourcesyntaxhighlight lang="pascal">
begin
var A := ReadlnInteger('A:');
Строка 56:
if B > C then Writeln(B) else Writeln(C);
end.
</syntaxhighlight>
</source>
 
=Таймер=
<sourcesyntaxhighlight lang="pascal">
uses Crt;
var
Строка 96:
end;
end.
</syntaxhighlight>
</source>
=Чтение массива=
<sourcesyntaxhighlight lang="pascal">
const
N = 10;
Строка 110:
Writeln(A);
end.
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="pascal">
//Аналог через ReadArrInteger(10).
begin
var A := ReadArrInteger(10);
end.
</syntaxhighlight>
</source>
 
=Заполнение и вывод массива процедурами=
<sourcesyntaxhighlight lang="pascal">
const
N = 3;
Строка 146:
ShowArray(3);
end.
</syntaxhighlight>
</source>
 
=Поиск минимума=
<sourcesyntaxhighlight lang="pascal">
const
N = 10;
Строка 168:
Writeln(Min);
end.
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="pascal">
//Аналог через ReadArrInteger(10).Min().
begin
var Min := ReadArrInteger(10).Min();
end.
</syntaxhighlight>
</source>
 
=Минимум среди положительных чисел=
<sourcesyntaxhighlight lang="pascal">
const
N = 4;
Строка 205:
Writeln('Нет положительных элементов.');
end.
</syntaxhighlight>
</source>
 
=Поиск максимума=
<sourcesyntaxhighlight lang="pascal">
const
N = 10;
Строка 227:
Writeln(Max);
end.
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="pascal">
//Аналог через ReadArrInteger(10).Max().
begin
var Max := ReadArrInteger(10).Max();
end.
</syntaxhighlight>
</source>
 
=Максимум среди положительных элементов=
<sourcesyntaxhighlight lang="pascal">
const
N = 4;
Строка 264:
Writeln('Нет положительных элементов.');
end.
</syntaxhighlight>
</source>
 
=Числа с делителями 2, 3 и 5=
<sourcesyntaxhighlight lang="pascal">
begin
var N := ReadlnInteger();
Строка 283:
end;
end.
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="pascal">
//Аналог через готовые методы.
begin
Writeln(ReadArrInteger(ReadlnInteger()).Where(x -> x mod 2 + x mod 3 + x mod 5 = 0).Count());
end.
</syntaxhighlight>
</source>
 
=Задача о среднем арифметическом=
# Вывести среднее арифметическое элементов больших A с чётными индексами.
# Вывести количество ненулевых элементов.
<sourcesyntaxhighlight lang="pascal">
begin
var A := ReadlnInteger();
Строка 307:
WritelnFormat('Количество ненулевых чисел равно {0}.', Numbers.Where(x -> x <> 0).Count());
end.
</syntaxhighlight>
</source>
 
=Обычный и високосный года=
<sourcesyntaxhighlight lang="pascal">
begin
var Y := ReadlnInteger();
Строка 318:
WritelnFormat('{0} - високосный год.', Y);
end.
</syntaxhighlight>
</source>
=Запись чисел в типизированный файл=
<sourcesyntaxhighlight lang="pascal">
var
F: file of integer;
Строка 333:
Close(F);
end.
</syntaxhighlight>
</source>
=Задача про шкафы=
Даны длины ребер шкафа A, B и C. Дана ширина и высота дверного проема. Узнать можно ли протолкнуть шкаф сквозь дверной проем.
<sourcesyntaxhighlight lang="pascal">
function F(a1, a2, b1, b2: real) := ((a1 < b1) and (a2 < b2)) or ((a2 < b1) and (a1 < b2));
 
Строка 349:
WritelnFormat('Протолкнуть шкаф в отверстие {0}возможно.', (F(A, B, X, Y) or F(B, C, X, Y) or F(A, C, X, Y)) ? '' : 'не');
end.
</syntaxhighlight>
</source>
=Вставка элемента=
Вставить после элемента, равного K, элемент со значением последнего.
<sourcesyntaxhighlight lang="pascal">
const
N = 5;
Строка 385:
WriteFormat('{0} ', A[i]);
end.
</syntaxhighlight>
</source>
<sourcesyntaxhighlight lang="pascal">
//Аналог через готовые методы.
begin
Строка 394:
Writeln(A);
end.
</syntaxhighlight>
</source>
 
=Числа Фибонанччи=
<sourcesyntaxhighlight lang="pascal">begin
var N := ReadlnInteger('N:');
var K := 3;
Строка 416:
end;
Writeln();
end.</sourcesyntaxhighlight>
=Шахматная доска=
В сказочном городе BykhovTown праздник! Приехали герои всеми любимых мультфильмов. Мудрая Сова привезла с собой шахматы. Но выслушать и запомнить правила игры полностью смог только Кролик. В связи с этим, Сова решила упростить правила. В результате нововведений на доске остались только 2 фигуры, которые, для простоты запоминания, было решено назвать в честь жителей городка. Одна из фигур – это «Кубыш». А вторую фигуру единогласно было решено назвать Мишка. Мишка недоволен ходами существующих фигур и хочет ходить (а точнее прыгать), по-своему. А точнее он хочет, чтобы его фигура могла прыгать либо на две клетки по вертикали или горизонтали, либо на одну клетку по диагонали. Так же Сова решила, что будет справедливо, если фигура «Кубыш» не будет ходить, поскольку настоящий «Кубыш» обычно прячется в засаде и не двигается, чтобы его не заметили.
Помогите жителям города понять, сумеет ли Мишка схватить, то есть попасть в одну клетку с Кубышом в ходе шахматной партии за один ход.
<sourcesyntaxhighlight lang="pascal">
begin
var C := (ReadlnInteger('X:'), ReadlnInteger('Y:'));
Строка 429:
((Abs(C.Item1 - Target.Item1) = 1) and (Abs(C.Item2 - Target.Item2) = 1)) ? '' : 'не');
end.
</syntaxhighlight>
</source>
=Месяцы и дни=
Вывести словами дату, записанную в формате: '''DD:MM''', где '''DD''' - день, а '''MM''' - месяц. Числа меньше 10 вводятся подобно следующему: 01.
<sourcesyntaxhighlight lang="pascal">
var
Date: string[5];
Строка 494:
Writeln('Либо Day, либо Month принимает значение, не принадлежащее [1..31] или [1..12] соответственно.');
end.
</syntaxhighlight>
</source>