Мирон пишет стихи и заметки. Каждый день он делает 20 заметок,
одна заметка весит 1000 байт. Кроме того, у Мирона скопился
большой архив стихотворений: 200 штук, каждый файл весит 2000
байт. Со временем разбираться в файлах стало трудно, и Мирон
решил отправить их в облачное хранилище.
Какой тариф выбрать Мирону на год (50 недель)?
Тарифы:
1)
Бесплатный тариф — до 3 гигабайт
2)
Стандартный тариф — до 9 гигабайт
3)
Бизнес-тариф — до 27 гигабайт
4)
Расширенный тариф — до 81 гигабайта
c решением
// PascalABC.NET 3.2, сборка 1389 от 01.03.2017
// Внимание! Если программа не работает, обновите версию!
begin
var F:real->real:=x->2*x*x-6*x+8;
var a,b:real;
Write('a b= '); Read(a,b);
Writeln('Min=',Range(a,b,9).Select(x->F(x)).Min)
end.
Пример
a b= -2 6
Min=3.50617283950617
2. Решение "по-школьному" ("дедушкин метод")
function F(x:real):real;
begin
F:=2*x*x-6*x+8
end;
var
a,b,y,h,min:real;
i:integer;
begin
Write('a b= '); Read(a,b);
h:=(b-a)/9;
min:=F(a);
for i:= 1 to 9 do begin
y:=F(a+i*h);
if y<min then min:=y
end;
Writeln('Min=',min)
end.
Пример
a b= -2 6
Min=3.50617283950617
Цикл с параметром был уже рассмотрен нами в разделе "Алгоритм" в теме "Виды алгоритмов".
Цикл с параметром используется, когда заранее известно сколько раз должен выполниться цикл.
Формат записи цикла:
For <пар.цикла> := <нач.знач> to <кон.знач.> do <оператор>
Здесь for, to, do - зарезервированные слова (для, до, выполнить);
<пар. цикла> - параметр цикла – переменная целочисленного типа (типа integer);
<нач. знач.> - начальное значение - число или переменная целочисленного типа (типа integer);
<кон. знач.> - конечное значение - число или переменная целочисленного типа (типа integer);
<оператор> - произвольный оператор Паскаля.
Пример: For i:=1 to n do <оператор>
здесь i - параметр цикла
1 - начальное значение
n - конечное значение
Если в теле цикла используется несколько операторов, тогда, используются операторные скобки: begin ... end.
При выполнении оператора for вначале вычисляется выражение <нач .знач.> и осуществляется присваивание его значения переменной цикла <пар .цикла> := <нач. знач.>. Далее сравниваются <пар .цикла> и <кон.знач.>. До тех пор, пока они не станут равными будет выполняться оператор (операторы). Значение переменной цикла <нач.знач> автоматически увеличивается на единицу в ходе выполнения цикла. Надо сразу заметить, что задать шаг цикла, отличный от 1 в этом операторе нельзя.
Объяснение: