You are on page 1of 10

1. 5.

uses wincrt; var h,i,j:integer;


var i,k:integer; begin
begin h:=1;
i:=12; k:=15; for j:=1 to 10 do
k:=trunc(sqrt(i))+5; inc(h);
writeln(k); i:=1;
end. j:=1;
repeat
inc(i);
inc(j);
2. until i=10;
uses wincrt; if h=j then
const writeln(‘Sama’) else
tabel:array[1..2,1..3] of writeln(‘beda’);
char=((‘5’,’6’,’7’), end.
(‘d’,’e’,’f’));
var
I,j:byte; 6.
Begin var r:real;
For i:=1 to 3 do begin
Begin r:=123.1234567;
For j:=3 downto 1 do writeln(r:0:0);
Write(tabel[i,j]); writeln(r:0:3);
Writeln; writeln(r:0:6);
End; writeln(frac(r));
End. writeln(trunc(r));
writeln(round(r);
end.

3.
function kali(x:integer):integer; 7.
var begin
i,j:integer; writeln(10 shl 3);
Begin writeln((14 shr 3) shl 5);
j:=2; end.
For i:=1 to x do
j:=2+j*2; 8.
Kali:=j; function AB(a,b:integer):integer;
End; begin
AB:=a shl b;
Begin End;
Writeln(kali(5)); Begin
End. Writeln(ab(16,7));
End.

4.
var t:=string;
begin
t:=’belajar itu pusing’;
delete(t,5,length(t)-5);
writeln(t);
end.

Latihan soal persiapan olimpiade komputer tahun 2006/2007 1


8. 12.
var var a,b:char;
a,b:string; begin
c:string[25]; for a:=’a’ to ‘e’ do
begin begin
a:=’belajar pascal’; for b:=’b’ to ‘d’ do
b:=’pusing sekali’; if (a=b) then
c:=a+b; write(b) else
if pos(‘aja’,a)=pos(‘ing’,b) write(b);
then writeln(‘OK’) writeln;
else writeln(‘Yes’); end;
writeln(c); end.
end.
13.
9. var I,j:integer;
var i:integer; j:shortint; function f(x:integer):integer;
begin begin
for i:=1 to 170 do f:=x*x+2;
inc(j); end;
end. function g(x:integer):integer;
begin
10. g:=(x-3)*x;
function a:boolean; end;
begin begin
write(‘A’); for i:=1 to 3 do
a:=true; begin
end; write(f(g(i)),’ ‘);
Function b:boolean; end;
Begin end.
Write(‘B’);
B:=false; 14.
End; var I,j:integer;
Begin begin
If (a and b) then j:=1;
Writeln(‘Ya’) else for i:=1 to 5 do
Writeln(‘Tidak’); begin
If (a or b) then j:=j+2;
Writeln(‘Ya’) else writeln(I,’ ‘,j);
Writeln(‘Tidak’); end;
End. end.

11. 15.
procedure X(a,b:integer); var I,j,k:integer;
var c:integer; begin
begin j:=5;
a:=5; for k:=1 to 3 do
b:=3; begin
c:=a+b; writeln(I,’ ‘,j);
write(c); i:=k;
end; i:=i+j;
j:=i-j;
var I,j,k:integer; end;
begin end.
i:=20;
X(4,5);
End.
Latihan soal persiapan olimpiade komputer tahun 2006/2007 2
16. 19.
Procedure abc(i,j:integer; Function
s:string); tambah(a,b:integer):integer;
Var Var c:integer;
y:integer; Begin
X:char; C:=a+(b mod 2);
Begin C:=c+a div b;
If i=j then writeln(s) else Writeln(C);
Begin End;
X:=s[1];
S[1]:=s[i]; Begin
S[i]:=x; Tambah(8,4);
Abc(i+1,j,s); End.
End;
End; 20.
Var s:string; Var
Begin A,B:string;
S:=’Abc’; C:string[20];
Abc(1,3,s); Begin
End. A:=’Aku senang’;
B:=’Turbo Pascal’;
17. If pos(‘ka’,A)=pos(‘ba’,B)
Var then writeln(‘OK’) else
h,i,j:integer; writeln(‘No’);
begin End.
h:=3;j:=-5;
for i:=1 to 5 do 21.
Inc(h); Var I,j:shortint;
Dec(j); Begin
For i:=1 to 5 do
Repeat J:=inc(j,5)+(10 shl 3);
Inc(j,2); Writeln(j);
Inc(i); End.
Until i=8;
If h=I then writeln(‘Yes’)
else writeln(‘No’); 22.
If h=j then writeln(‘Ok’) Var a,b,c:integer;
else writeln(‘No’); Begin
If i=j then writeln(‘Yes’) A:=13 div 2; b:=7 shr 2;
else writeln(‘No’); C:= a mod 3;
End. If (b and c) then
writeln(‘OK’) else
writeln(‘No’);
18. If (b and a) then
Begin writeln(‘OK’) else
Writeln(18 shl 3); writeln(‘No’);
Writeln(18 shr 2); End;
Writeln((18 shr 3) shl 4);
End.

Latihan soal persiapan olimpiade komputer tahun 2006/2007 3


23. 27.
Var i:integer; Var I,j:integer;
Function f(x:integer):integer; Begin
Begin For i:=1 to 20 do
F:=x*x+(15 shl 5); Begin
End; If(i mod 2=0) then
Function g(x:integer):integer; For j:=1 to (I div 3) do
Begin Begin
If x>4 then g:=x mod 2 else Write(j+2*3);
g:=5 mod x; If (j mod 2=0) then
End; Write(‘ ‘);
Begin End;
Writeln(f(g(5))); Writeln;
Writeln(g(f(5))); End;
End. End.

24. 28.
Var I,j:integer; Const
Begin tabel:array[1..3] of
For i:=5 to 8 do char=(‘a’,’b’,’c’);
Begin Begin
For j:= 4 downto 1 do Writeln(tabel[1]);
Write(I,’ ‘,j); Write(tabel[2]);
End; Writeln(tabel[3]+tabel[1]);
End. End.

25. 29.
Var s:string;i:integer; Var x:word;
begin Begin
s:=’pusing’; X:=’test’;
for i:=1 to length(s) do Writeln(‘pascal’);
begin Wroteln(x);
s[i]:=s[length(s)-i+2]; End.
write (s[i]);
end; 30
end. Function b(a:byte):boolean;
Var x,y:byte;
Begin
26. X:=trunc(sqrt(a))+2;y:=2;
Var While x<>y do
t,i:string; If (a mod y)>0 then
begin Inc(y) else exit;
t:=’menit’; b:=x=y;
for i:=length(s) downto 1 do End;
begin
s[i]:=s[length(s)-i+2]; Begin
write s[i]; If b(1) then write('a');
end; If b(2) then write('b');
end. If b(3) then write('c');
If b(4) then write('d');
If b(5) then write('e');
End.

Latihan soal persiapan olimpiade komputer tahun 2006/2007 4


30. 33.
uses wincrt; Var a,b,c,n,i:integer;
var i,kar:integer; Bil:array[1..100] of integer;
begin Begin
Readln(n);
for i:=1 to 5 do A:=1;b:=1;
begin For i:=1 to 5 do
kar:=kar+2; Begin
end; C:=a+b;
writeln(ord(chr(kar-3*5))); Bil[i]:=c;
end. a:=b;
b:=c;
31. end;
Var bil:string; writeln(n);
b:integer; end.
Begin N diisi dengan 10
Readln(b);
While b<>0 do 34.
Begin Var a;string;x:integer;
If bil and 1=1 then Begin
Bil:=’1’+bil else S:=’Tim Olimpiade Komputer’;
Bil:=’0’+bil; For x:=1 to length(s) do
b:=b shl 2; If s[x]:=’’ then
End; Begin
Writeln(b); S:=s+copy(s,3,x);
End. Delete(s,3,x);
B diisi dengan 5 End;
Writeln(s);
32. End.
Begin
Readln(a); 35.
For i:=1 to a do bil:=bil+i; Function f(x:integer):integer;
Writeln(bil); Begin
End. F:=x*3-1;
A diisi dengan 5 End;
Function g(x:integer):integer;
33. Begin
Var s1,s2:string; G:=x*x-x;
i,ins:integer; End;
begin Function h(x:integer):integer;
s1:=’toki’; Begin
s2:=’2005’; H:=1+2*x;
for i:=1 to length(s1) do End;
if ord(s1)<10 then ins:=i;
insert(s2,s1,ins); Begin
s:=s1+s2; Writeln(f(g(h(2)));
writeln(s); End.
end.

Latihan soal persiapan olimpiade komputer tahun 2006/2007 5


36. 39.
Var a:array[1..5] of integer; Var s:string;
X,y:integer; a:integer;
Begin b:char;
For x:=1 to 5 do begin
Begin s:=’pusing sekali’;
If x mod 2=0 then a:=1;
Begin repeat
Y:=3*x; inc(a);
A[x]:=y; if s[a]<s[a+1] then
End; begin
End; b:=s[a];
For y:=1 to 5 do s[a]:=s[a+2];
If y mod 3=1 then s[a]:=b;
a[y]:=x; a:=1;
for x:=1 to 5 do y:=y+a[x]; end;
writeln(y); until a=length(s)-1;
end. writeln(s);
end.
37.
Var s:array[1..5] of string; 40.
A,b:integer; Var s:string[10]’
Begin Begin
S[1]:=’hallo saya pascal’; S:=’setia’;
For a:=1 to 5 do Writeln(‘#’,s,’#’);
Begin S:=s+’sampai akhir’;
S[a]:=’’; Writeln(‘#’,s,’#’);
For b:=1 to length(s[a-1]) do End.
S[a]:=s[a]+s[a-1][b];
End; 41.
Writeln(s[5]); Var s:string;
End. k,i:string;
38. begin
Var a,b,j:integer; s:=’Go TOKI for Gold’;
Z:boolean; k:=’Go’;
X:array[1..100] of integer; i:=’go’;
Begin writeln(pos(k,s));
Jumlah:=1; writeln(copy(s,2,length(s)-3+
X[jumlah]:=3; copy(s,1,3);
For a:=1 to 10 do writeln(insert(‘toki’,s,3);
Begin writeln(insert(‘medali’,s,
If a mod 2=1 then pos(‘Gold’,s);
Begin end.
Z:=true;
For b:=1 to jumlah do
If a mod x[b]=0 then
Z:=false;
If z then
Begin
Inc(jumlah);
X[jumlah]:=a;
End;
End;
End;
Writeln(x[jumlah]);
End.
Latihan soal persiapan olimpiade komputer tahun 2006/2007 6
42. 46.
Var Procedure halo(i:integer);
A:array[1..6,1..6] of byte; Begin
Begin If i=1 then
For i:=1 to 6 do Writeln(‘habis dibagi 1’)
For j:=1 to 6 do Else
A[i,j]:=1; If i=2 then write(‘dua’)
A[1,5]:=2; Else
For i:=1 to 6 do If i mod 4=0 then
Begin Write(‘kelipatan 4’)
For j:=1 to 6 do Else
Begin If i mod 2=0 then
Write(a[i,j]); Halo(i+3);
End; Else
Writeln; If i mod 3=0 then
End; Halo(I div 2)
End. Else
Halo(I div 3);
43. End;
Begin Begin
Writeln(8+0:0); Halo(20);
Writeln(8+1:0); End.
Writeln(8/1:0);
Writeln(8-0:0:0); 47.
End. Var teta:real;
B,i,l,f:integer;
44. Begin
Var i,j,k:byte; Teta:=90;
Begin B:=4;i:=4;l:=4;
For i:=1 to 3 do F:=b*i*l*trunc(sin(teta));
For j:=1 to 3 do End.
For k:=1 to 3 do
If k=1 then 48.
Writeln(i,’ ’,j,’ ’,k) Var s:string;
else writeln(i,j,k,i); I,x:integer;
End.
begin
45. S:=’abcdefg’;
Var x,y,z:byte; i:length(s);
Begin for x:=1 to i do
Z:=1; if upcase(s[x]) in [‘A’,
Readln(x); ‘b’,’C’,’d’] then
Inc(y,x-z); s[x]=upcase(s[x+2]);
Dec(z,y+x); writeln(s);
If y=z or x=z then end.
Writeln(‘A’)
Else 49.
Writeln(‘B’); Function 2max(a,b:integer):integer;
End. Begin
Input x=7. If a<b then 2max:=a
Else 2max:=b;
End;
Begin
2max(6,8);
End.
50.
Latihan soal persiapan olimpiade komputer tahun 2006/2007 7
X:=1; Var a,b,c:^integer;
Repeat Begin
Inc(x); New(a), new(b);
Until x>10; A^:=5;
Y:=0; B^:=5;
While y<10 do C:=a;
Inc(y); A:=b;
Writeln(x,’ ’,y); Writeln(a^,’ ‘,b^);
Dispose(c), dispose(b);
51. End;
Procedure komp(i,pos:integer);
Var p:integer; 56. const x=10;
Begin Begin
If (i=pos) and (i>0) then Inc(x,3);
Write(‘oke’) Writeln(x);
Else End.
For p:=1 to 10 do
Komp(p,pos); 57. const x:boolean=false;
End; Begin
Begin While x do
Komp(1,1); Begin
End. Write(x);
x:=not(x);
52. end;
var n,x,y,i:integer; end.
begin
n:=5; 58.
for x:=1 to n do Function
if data[x]>data[y] then max(a,b,c:integer):integer;
begin Var p:integer;
i:=data[x]; Begin
data[x]:=data[y]; P:=1;
data[y]:=I; If a>p then p:=a;
end; If b>a then p:=b;
writeln(data[y]); If c>p then c:=p;
end. If d>c then p:=d;
If p>c then p:=c;
53. Write(p);
Var End;
a:array[0..4,0..4,0..4) of byte; Begin
begin Max(2,3,4);
writeln(sizeof(A)); End.
end.
59.
54. Begin
Var s:string; A:=10; b:=25
Begin C:=a xor b;
S:=’Pusing sekali’; A:=c or b;
S[0]:=#5; B:=c and a;
Writeln(s); C:=a xor b;
S[0]:=#7; Writeln(a,b,c);
Writeln(s); End.
End.

55. 60.
Latihan soal persiapan olimpiade komputer tahun 2006/2007 8
Const procedure cetak(a:byte);
pos:array[1..5] of Begin
byte=(1,2,3,4,5); While a>0 do
var i,j:byte; Begin
k:array[1..5] of byte; Write(a mod 3);
begin A:=a shl 3;
j:=1; End;
for i:=1 to 5 do End;
begin Begin
k[pos[i]]:=j; Cetak(15);
dec(j); End.
end;
for i:=1 to 5 do 64.
write(k[i]:2); Var a,i,z:byte;
end. Begin
A:=ord(‘B’);
61. Z:=ord(‘C’);
Function coba(a:byte):byte; I:=a;
Var t:byte; While i<z do
Begin Begin
T:=a; Write(chr(i));
While odd(t) do i:=i+2;
Begin end;
T:=t shr 2; end.
End;
Coba:=t; 65.
End; Function a:boolean;
Begin Begin
Write(Coba(20)); Write(‘hello’);
End. A:=true;
End;
62. Function b:boolean;
Var i:integer; Begin
Procedure aa(var i:integer); Writeln(‘Word!’);
Begin B:=true;
i:=i*3; End;
end; Begin
procedure bb(i:integer); If a and b then
begin writeln(‘Pascal’);
aa(i); end.
i:=i-2;
end; 66.
begin Var x:integer;y:^integer;
i:=5; Begin
aa(i); X:=15;
bb(i); New(y);
writeln(i); Y^:=5;
end. Writeln(x,’ ’,y^);
Y:=@x;
Writeln(x,’’,y^);
End.

63. 67.
Latihan soal persiapan olimpiade komputer tahun 2006/2007 9
Var x,y:string; Function hitung(i:integer):integer;
I:integer; Var hit:integer;
Begin J:integer;
X:=’Tim Olimpiade Komputer Begin
Indonesia’; For j:=1 to i do
Y:=’’; Hit:=hit+j;
For i:=1 to length(x) do Hitung:=hit;
Y[i]:=x[length(x)-2+3]; End;
Writeln(y); Behin
End. Write(Hitung(15));
End.
68.
Procedure 73.
tambah(x,y,result:integer); var a,i,j,k,kode:integer;
Begin begin
Result:=x+y; writeln('masukan 5integer ');
X:=0; j:=1;
Y:=0; k:=2;
End; for i:=1 to 5 do
Var begin
X,y,result:integer; readln(a);
Begin j:=j+a;
Result:=0; if a<10 then k:=k+1;
X:=15; end;
Y:=17; kode:=j div k;
Tambah(x,y,reslut); writeln('kode=',kode);
Writeln(x,’ ’,y,’ ’,result); end.
End. Jika a diisi dengan 10, 20, 30, 40
dan 50, berapakah nilai kode?
69. 74.
Var I,j:integer; Var a,b:integer;
Begin Begin
For i:=1 to 4 do For a:=1 to 10 do
For j:=1 to 4 do Begin
Write(‘* ‘); B:=20-A;
Writeln; Write(a,b);
End. End;
End.
70. 75.
Const i:integer=10; Var I,j:integer;
Begin Function jumlah(n:integer):integer;
For i:=1 to 6 do Var j,k:integer;
Write(i,’ ‘); Begin
End. J:=1;
For k:=1 to n do j:=j+k;
71. Jumlah:=k;
Var p,q:word; End;
Begin Begin
P:=5; J:=15;
For q:=1 to 5 do For i:=1 to 5 do j:=j+jumlah(i);
Begin Writeln(j);
P:=p*q; End.
Writeln(q,’ ‘,p);
End;
End.
72.
Latihan soal persiapan olimpiade komputer tahun 2006/2007 10

You might also like