Const ru : array[1..33] of Char = ('а','б','в','г','д','е','ё','ж','з','и', 'й','к','л','м','н','о','п','р','с','т', 'у','ф','х','ц','ч','ш','щ','ъ','ы','ь', 'э','ю','я'); en : array[0..33] of String = (' ','a','b','v','g','d','e','ye','zh','z','i', 'y','c','l','m','n','o','p','r','s','t', 'u','f','h','c','ch','sh','sch','`','ы','', 'ea','yu','ja'); { транскрипцию записал не заглядывая ни в какие справочники - можете кидаться тапками }
Function GetIndex(ss : Char) : Byte; Var ii : Byte; Begin ii:=1; While (ii<=33) and (LowerCase(ss)<>ru[ii]) do Inc(ii); If ii in [1..33] then GetIndex:=ii else GetIndex:=0; end;
Function Trans(S : String) : String; Begin If Length(S)>0 then Trans:=en[GetIndex(S[1])]+Trans(Copy(S,2,Length(S)-1)) else Trans:=''; end;
Begin Writeln(Trans('паскаль')); Writeln(Trans('ява')); end.
1) Решение с рекурсии. Программа проста в понимании, но неэффективна при больших значениях 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. 2) Решение с динамического программирования. Вычисляет намного быстрее, чем решение с рекурсией. 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. 3) Решение с моделирования. Использует меньше памяти. 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 ('введи три числа');
read (a,b,c);
min:=a;
if b<min then min:=b;
if c<min then min:=c;
writeln ('min=',min);
end.