Олимпиада 2019-2020 (школьный тур)
для 10-11 класса
для всех написать программы.
№1. даны координаты трех точек на числовой оси (e, f, к). определить, какая из точек (e или
f) находится дальше от точки к. в качестве ответа вывести координаты этой точки и её расстояние до
точки к.(10 )
№2.с клавиатуры вводится 10 целых чисел. определить количество и сумму чётных
положительных чисел.(20 )
№3. подсчитайте, сколько во введенном предложении трехбуквенных слов. все слова в
предложении отделены друг от друга одним пробелом. (30 )
no4. в массиве а[1..n] (n< 1000), состоящем из целых чисел, найдите самую большую пару чисел
(сумму двух соседних чисел). укажите порядковые номера чисел и их сумму. если таких пар несколько,
то указать любую из них.(40 )
#include <iostream>
#include <fstream>
#include <random>
using namespace std;
int main()
{
ofstream fout("f.txt");
random_device rd;
mt19937 mer(rd());
for(int i = 0 ; i < 10 ; ++i)
fout << mer() << ' ';
fout.close();
ofstream gout("g.txt");
ifstream fin("f.txt");
for (int i = 0 ; i < 10 ; ++i)
{
unsigned int temp;
fin >> temp;
if( temp % 2 == 0 )
gout << temp << ' ';
cout << temp << ' ';
}
fin.close();
gout.close();
}
===== PascalABC.NET =====
procedure SortShell<T>(a: array of T);
where T: IComparable<T>;
// сортировка по Шеллу
begin
var n := a.Length;
var d := n div 2;
while d > 0 do
begin
var k := True;
while k do
begin
k := False;
for var i := 0 to n - d - 1 do
if a[i].CompareTo(a[i + d]) > 0 then begin
Swap(a[i], a[i + d]);
k := True
end
end;
d := d div 2
end
end;
begin
var a := ArrRandom(10, -20, 20); a.Println;
SortShell(a); a.Println
end.