// F#
[<EntryPoint>]
let main argv =
let getRandomCollection n =
let rand = new System.Random()
Array.map (fun x -> rand.Next(-10, 10)) [| 1..n |]
let inputArray = getRandomCollection 15
printf "source array: %A\n" (inputArray |> Array.toList)
// First part
printf "numberToCheckOnEqual: "
let numberToCheckOnEqual = System.Console.ReadLine() |> System.Int32.Parse
let indecesEqualsToNumber =
inputArray
|> Array.mapi (fun i x -> (x, i))
|> Array.filter (fun (x, i) -> x = numberToCheckOnEqual)
|> Array.map (fun (x, i) -> i)
|> Array.toList
printf "%d equals to %d: %A\n" (indecesEqualsToNumber |> List.length) numberToCheckOnEqual indecesEqualsToNumber
// Second part
printf "a: "
let a = System.Console.ReadLine() |> System.Int32.Parse
printf "b: "
let b = System.Console.ReadLine() |> System.Int32.Parse
let sum =
inputArray.[a..b]
|> Array.sum
printf "sum of array [%d..%d]: %d\n" a b sum
// Last part
let finalArray =
inputArray
|> Array.map (fun x -> if x < 0 then x*x else x)
printf "final array: %A" finalArray
System.Console.ReadKey true |> ignore
0
Const mas : Array [0..6,0..8] Of String = (('Иванов Иван Иванович ', '1', '2', '3', '1', '5','3', '3', '2'), ('Петров Петр Петрович ', '5', '5', '5', '4', '5','5', '5', '5'), ('Сидаров Сидор Сидорович ', '3', '2', '3', '2', '2','2', '2', '1'), ('Алексеев Алексей Алексеевич ', '1', '2', '1', '1', '2','2', '2', '5'), ('Сергеев Сергей Сергеевич ', '2', '2', '5', '5', '5','5', '2', '3'), ('Степанов Степан Степанович ', '5', '5', '5', '4', '5','5', '5', '5'), ('Давыдов Давид Давидович ', '3', '3', '3', '3', '3','3', '3', '3')); var sr:real; // средний балл b:real;begin writeln('--------------------------------------------------------------------'); writeln('| ФИО |',' 1 |',' 2 |',' 3 |',' 4 |',' 5 |',' 6 |',' 7 |',' 8 |',' ср. |'); writeln('--------------------------------------------------------------------'); for var i:=0 to 6 do begin write('|'+mas[i,0]+'|'); sr:=0; for var j:=1 to 8 do begin write(' '+mas[i,j]+' |'); double.TryParse(mas[i,j],b); // строку в число sr:=sr+b; end; sr:=sr/8; write(sr:5:3); write('|'); writeln; end; writeln('--------------------------------------------------------------------'); end.
<u>1) Решение с помощью рекурсии.</u>
<u>Программа проста в понимании, но неэффективна при больших значениях</u>
function f(i: integer): longint;
begin
if i < 2 then
f := 1
else
f := f(i - 1) + f(i - 2);
end;
begin
writeln('f(10) = ', f(10));
writeln('f(25) = ', f(25));
writeln('f(40) = ', f(40));
end.
<u>2) Решение с помощью динамического программирования. Вычисляет намного быстрее, чем решение с рекурсией.</u><u></u>
var
i: integer;
f: array[0..40] of longint;
begin
f[0] := 1;
f[1] := 1;
for i := 2 to 40 do
f[i] := f[i - 1] + f[i - 2];
writeln('f(10) = ', f[10]);
writeln('f(25) = ', f[25]);
writeln('f(40) = ', f[40]);
end.
<u>3) Решение с помощью моделирования. Использует меньше памяти.</u>
function f(i: integer): longint;
var
a, b: longint;
j: integer;
begin
if i < 2 then
f := 1
else
begin
a := 0;
b := 1;
for j := 0 to i do
begin
b := a + b;
a := b - a;
end;
f := a;
end;
end;
begin
writeln('f(10) = ', f(10));
writeln('f(25) = ', f(25));
writeln('f(40) = ', f(40));
end.