function Hodnota( s: string ): integer; var i, min, imin, priorita, zavorky, x: integer; begin writeln( 'Hodnota("',s,'"):' ); zavorky := 0; min := MAXINT; for i:=1 to length(s) do begin if s[i] in ['+','-','*','/'] then begin if (s[i]='+') or (s[i]='-') then priorita := 1 + 10 * zavorky else if (s[i]='*') or (s[i]='/') then priorita := 2 + 10 * zavorky; if priorita <= min then begin writeln( 'i:',i,' min: ', min, ' priorita:', priorita ); min := priorita; imin := i end end; if s[i]='(' then Inc( zavorky ) else if s[i]=')' then Dec( zavorky ); end; { writeln( 'Minimalni operace: ', imin, ' ',min, ' ',s[imin] ) {} if min=MAXINT then begin if s[1]='(' then Hodnota := Hodnota( copy(s,2,length(s)-2) ) else begin x := 0; for i:=1 to length(s) do x := 10 * x + ord(s[i]) - ord('0'); Hodnota := x end end else if min > 10 then Hodnota := Hodnota( copy(s,2,length(s)-2) ) else begin if s[imin]='+' then Hodnota := Hodnota( copy(s,1,imin-1) ) + Hodnota( copy(s,imin+1,255) ) else if s[imin]='-' then Hodnota := Hodnota( copy(s,1,imin-1) ) - Hodnota( copy(s,imin+1,255) ) else if s[imin]='*' then Hodnota := Hodnota( copy(s,1,imin-1) ) * Hodnota( copy(s,imin+1,255) ) else if s[imin]='/' then Hodnota := Hodnota( copy(s,1,imin-1) ) div Hodnota( copy(s,imin+1,255) ) else end end; begin writeln( Hodnota( '(((237)))' ) ); writeln( Hodnota( '2+3*7-9*(26/15+3)/9+2' ) ); writeln( Hodnota( '2+3' ) ); writeln( Hodnota( '2+3*7' ) ); writeln( Hodnota( '(2+3)*7' ) ){} end. const N = 5; PRAZDNE = 0; var P: array[1..N,1..N] of integer; procedure Vytiskni; var x,y: integer; begin for x := 1 to N do begin for y := 1 to N do write( P[x,y]:3 ); writeln end; writeln; { readln {} end; procedure Proskakej( x,y, krok: integer ); var dx,dy, xx,yy: integer; begin P[ x,y ] := krok; { zapsat } if krok >= N*N then begin Vytiskni end else begin for dx := -2 to +2 do for dy := -2 to +2 do if abs(dx) + abs(dy) = 3 then begin xx := x+dx; yy := y+dy; if (xx >= 1) and (xx <= N) and (yy >= 1) and (yy <= N) then if P[ xx,yy ] = PRAZDNE then Proskakej( xx,yy, krok+1 ) end; end; P[ x,y ] := PRAZDNE; { uvolnit } end; var x,y: integer; begin for x := 1 to N do for y := 1 to N do P[x,y] := PRAZDNE; { P[2,2] := 9999; {} Proskakej( 1,1, 1 ) end. const MAX = 100; MAXCIFRA = 9; var Variace: array[1..MAX] of integer; Pouzite: array[0..MAXCIFRA] of boolean; procedure VypisVariace( soustava, PocetMist, pozice: integer ); var i: integer; begin if pozice > PocetMist then begin for i:=1 to PocetMist do write( Variace[i] ); writeln end else for i:=0 to soustava-1 do if Pouzite[ i ] = FALSE then begin Pouzite[ i ] := TRUE; Variace[ pozice ] := i; VypisVariace( soustava, PocetMist, pozice+1 ); Pouzite[ i ] := FALSE end end; var i: integer; begin writeln( '---------------------' ); for i:=0 to MAXCIFRA do Pouzite[ i ] := FALSE; VypisVariace( 4, 3, 1 ) end. const MAX = 100; var Variace: array[1..MAX] of integer; procedure VypisVariace( soustava, PocetMist, pozice: integer ); var i: integer; begin if pozice > PocetMist then begin for i:=1 to PocetMist do write( Variace[i] ); writeln end else for i:=0 to soustava-1 do begin Variace[ pozice ] := i; VypisVariace( soustava, PocetMist, pozice+1 ) end end; begin VypisVariace( 4, 10, 1 ) end. var i1,i2,i3,i4,i5, k: integer; begin k := 5; for i1 := 0 to k-1 do end. var i1,i2,i3,i4,i5, k: integer; begin k := 5; for i1 := 0 to k-1 do for i2 := 0 to k-1 do for i3 := 0 to k-1 do for i4 := 0 to k-1 do for i5 := 0 to k-1 do writeln( i1, i2, i3, i4, i5 ) end. const MAX = 100; var UzZnamVysledek: array[0..MAX] of boolean; Vysledek: array[0..MAX] of longint; function fib( i: integer ): longint; begin { writeln( 'i=',i ); {} if UzZnamVysledek[ i ] then fib := Vysledek[ i ] else begin if i <= 1 then Vysledek[ i ] := 1 else Vysledek[ i ] := fib(i-1) + fib(i-2); UzZnamVysledek[ i ] := TRUE; fib := Vysledek[ i ] end end; var i: integer; begin for i:=1 to MAX do UzZnamVysledek[ i ] := FALSE; for i:=1 to 100 do writeln( i:3, ': ', fib(i) ) end. function fib( i: integer ): longint; begin if i <= 1 then fib := 1 else fib := fib(i-1) + fib(i-2) end; var i: integer; begin for i:=1 to 100 do writeln( i:3, ': ', fib(i) ) end. function fakt( N: integer ): longint; var s,t,u,v,w,x,y,z: string[20]; begin if N <=1 then fakt := 1 else fakt := N * fakt( N-1 ) end; begin writeln( fakt(10) ) end. function fakt( N: integer ): integer; begin fakt := N * fakt( N-1 ) end; begin writeln( fakt(5) ) end. function fakt( N: integer ): integer; begin if N <=1 then fakt := 1 else fakt := N * fakt( N-1 ) end; begin writeln( fakt(5) ) end.