Kali ini aku cuma mau posting masalah pemrograman , , kode2 ini adalah coding yg aku lakukan sekitar 1th yg lalu , , aku udah berhenti ngoding sejak awal masuk kelas 3 sma. ya jadi sekarang sedikit2 lupa (banyak aslinya) untuk permulaan aku akan posting masalah code2 (dlm pascal) yg udah d accept di TOKI Learning Center.
code2 ini merupakan penyelesaiian dari soal2 tingkat mudah yg ada disana, mungkin kawan2 sudah banyak yg bisa , tp aku disini hanya sekedar berbagi saja barang kali masih ada yg belum bisa dapat menggunakannya sebagai acuan belajar. aku posting yg dlm versi PASCAL krn lebih mudah utk d pelajari (menurutku :p).. .
ok , let's check it !
Soal Hello World
kode penyelesaiannku sbb. . .
program
hello_world;
uses
crt;
var
n:
1..100
;
begin
clrscr;
readln (n);
clrscr;
for
n:=
1
to
n
do
writeln
(
'Hello World!'
);
readln;
end
.
kode penyelesaiannku sbb. . .
{
soal : angka 1
misalkan f(i) adalah nilai suku ke i
perhatikan bahwa :
f(0) = 0
f(i) = i + f(i-1) ,jika i >= 1
misal :
f(3) = 3 + f(2)
= 3 + 2 + f(1)
= 3 + 2 + 1 + f(0)
= 3 + 2 + 1 + 0
= 6
}
var
N :
longint
;
//gunakan longint karena N bisa sampe 50000
i :
longint
;
x :
longint
;
begin
readln(N);
x :=
0
;
// suku ke 0
for
i :=
1
to
N
do
// looping dari 1 sampai suku ke N
begin
x := i + x;
// suku ke-i adalah i + (suku sebelumnya)
writeln
(x);
end
;
readln;
end
.
Soal Pengurutan Bergelembung
kode penyelesaiann dalam C++, data pascalku hilang. . . .
{ Soal : pengurutan bergelembung
}
var
masukan,pilihan :
string
[
3
];
begin
readln (pilihan);
masukan:= upcase (pilihan);
if
masukan=
'PAS'
then
begin
writeln
(
'var data:array[1..10000] of longint;'
);
writeln
(
' n,i,j,temp:longint;'
);
writeln
(
'begin'
);
writeln
(
' readln(n);'
);
writeln
(
' for i:=1 to n do readln(data[i]);'
);
writeln
(
' for i:=1 to n-1 do'
);
writeln
(
' for j:=i+1 to n do'
);
writeln
(
' if (data[i]>data[j]) then'
);
writeln
(
' begin'
);
writeln
(
' temp:=data[i];'
);
writeln
(
' data[i]:=data[j];'
);
writeln
(
' data[j]:=temp;'
);
writeln
(
' end;'
);
writeln
(
' for i:=1 to n do writeln(data[i]);'
);
writeln
(
'end.'
);
end
else
if
masukan=
'CPP'
then
begin
writeln
(
'int data[10001];'
);
writeln
(
'int n,i,j,temp;'
);
writeln
(
'int main(){'
);
writeln
(
' scanf("%d",&n);'
);
writeln
(
' for (i=1;i<=n;i++) scanf("%d",data[i]);'
);
writeln
(
' for (i=1;i<=n-1;i++)'
);
writeln
(
' for (j=i+1;j<=n;j++)'
);
writeln
(
' if (data[i]>data[j]){'
);
writeln
(
' temp=data[i];'
);
writeln
(
' data[i]=data[j];'
);
writeln
(
' data[j]=temp;'
);
writeln
(
' }'
);
writeln
(
' for (i=1;i<=n;i++) printf("%d\n",data[i]);'
);
writeln
(
' return 0;'
);
writeln
(
'}'
);
end
;
end
.
Soal Pecahan Uang
kode penyelesaiannku sbb. . .
{ soal: pecahan uang
- input jumlah uang yg harus dipecah (uangawal)
- cacah uang menurut pecahan yg ada
- munculkan hasil pecahan
}
var
sisa,seRb,limaRTS,duaRTS,seRTS,limaPLH,duaPLH,sePLH,lima,dua,satu:
integer
;
uangawal:
integer
;
begin
readln(uangawal);
seRb:= uangawal
div
1000
;
sisa:= uangawal
mod
1000
;
//pecahan 1000
if
(uangawal >=
1000
)
then
writeln
(
1000
,
' '
,seRB);
limaRTS:= sisa
div
500
;
sisa:= sisa
mod
500
;
//pecahan 500
if
(limaRTS >=
1
)
then
writeln
(
500
,
' '
,limaRTS);
duaRTS:= sisa
div
200
;
sisa:= sisa
mod
200
;
//pecahan 200
if
(duaRTS >=
1
)
then
writeln
(
200
,
' '
,duaRTS);
seRTS:= sisa
div
100
;
sisa:= sisa
mod
100
;
if
(seRTS >=
1
)
then
//pecahan 100
writeln
(
100
,
' '
,seRTS);
limaPLH:= sisa
div
50
;
sisa:= sisa
mod
50
;
if
(limaPLH >=
1
)
then
//pecahan 50
writeln
(
50
,
' '
,limaPLH);
duaPLH:= sisa
div
20
;
sisa:= sisa
mod
20
;
//pecahan 20
if
(duaPLH >=
1
)
then
writeln
(
20
,
' '
,duaPLH);
sePLH:= sisa
div
10
;
sisa:= sisa
mod
10
;
if
(sePLH >=
1
)
then
//pecahan 10
writeln
(
10
,
' '
,sePLH);
lima:= sisa
div
5
;
sisa:= sisa
mod
5
;
if
(lima >=
1
)
then
//pecahan 5
writeln
(
5
,
' '
,lima);
dua:= sisa
div
2
;
sisa:= sisa
mod
2
;
//pecahan 2
if
(dua >=
1
)
then
writeln
(
2
,
' '
,dua);
satu:= sisa
div
1
;
sisa:= sisa
mod
1
;
if
(satu >=
1
)
then
//pecahan 1
writeln
(
1
,
' '
,satu);
end
.
program
turnamen_panco;
{ Soal:turnamen panco
1-input data untuk banyaknya kasus (t)
2-input data untuk banyaknya tim (n)
3-input data untuk kekuatan setiap tim (pi)
4-cari tim yg memiliki kekuatan terbesar (max)
5-lakukan pencarian letak tim dengan kekuatan terbesar
6-output kan posisi tim dg kekuatan terbesar
}
var
t,t1:
1..100
;
//banyaknya kasus
n:
1..10
;
Pi:
array
[
1..5000
]
of
integer
;
// banyaknya tim
i:
integer
;
// untuk perulangan
nk:
integer
;
// 2 pangkat n
max:
integer
;
// kekuatan terbesar tim
posisi:
integer
;
//posisi tim dg kekuatan terbesar
begin
{menentukan banyaknya kasus}
readln (t);
t1:=
1
;
repeat
nk:=
1
;
readln (n);
for
i:=
1
to
n
do
nk:=
2
* nk;
{memasukkan kekuatan setiap tim}
for
i:=
1
to
nk
do
read (pi[i]);
{mencari tim dg kekuatan terbesar}
max:=
0
;
for
i:=
1
to
nk
do
begin
if
(pi[i] > max)
then
//algoritma mencari data terbesar
max:=pi[i];
end
;
{mencari posisi tim dg kekuatan terbesar}
for
i:=
1
to
nk
do
begin
if
(pi[i] = max)
then
begin
//algoritma pencarian beruntun
posisi:= i;
break;
end
;
end
;
writeln
(posisi);
//outputkan posisi tim dg kekuatan terbesar
inc (t1);
until
(t1 > t);
end
.
{ soal: lima terbaik
}
var
ai:
array
[
1..100000
]
of
longint
;
terbesar:
longint
;
i,j,k,l,temp,t,n:
longint
;
begin
read(t);
for
i:=
1
to
t
do
begin
read (n);
for
j:=
1
to
n
do
read (ai[j]);
for
k:=
1
to
5
do
for
l:= k+
1
to
n
do
if
(ai[k] < ai[l])
then
begin
//merge short
temp:= ai[k];
ai[k]:= ai[l];
ai[l]:= temp;
end
;
terbesar:=
0
;
for
j:=
1
to
5
do
terbesar:= terbesar + ai [j];
writeln
(terbesar);
end
;
end
.
var
T,a,b,l,ans,tc :
longint
;
begin
read(t);
for
tc:=
1
to
t
do
begin
read(a);
read(b);
read(l);
ans:= a+ b * ((l-
2000
)
div
100
);
if
(ans < a)
then
ans:= a;
writeln
(ans);
end
;
end
.
{ soal: Jumlahan asli
- input banyaknnya kasus (T)
- input nilai untuk tiap kasus (A)
- proses nilai dengan pola A?
- output hasil proses
}
var
T:
longint
;
A:
array
[
1..100000
]
of
int64
;
i,j:
longint
;
begin
read (t);
for
i:=
1
to
t
do
begin
read (a[i]);
a[i]:= (a[i] +
1
)* a[i]
div
2
;
writeln
(a[i]);
end
;
end
.
{ Soal: BeSaR DaN KeCiL
- input jumlah kasus (t)
- input teks untuk setiap kasus, maksimal 100 huruf (text)
- jadikan teks selang seling besar dan kecil
- output teks yg sudah selang seling besar-kecil
}
var
t,t1,s1:
integer
;
//jumlah kasus
text:
array
[
1..100
]
of
string
;
i,j:
integer
;
s:
string
[
100
];
begin
t1:=
1
;
s1:=
1
;
readln(t);
{input teks untuk tiap kasus}
for
i:=
1
to
t
do
begin
readln (text[i]);
end
;
repeat
repeat
{proses pembesaran huruf}
for
i:=
1
to
t
do
begin
s:= text[i];
for
j:=
1
to
length (s)
do
begin
if
( j
mod
2
<>
0
)
then
s[j]:= upcase (s[j])
end
;
text[i]:= s;
end
;
inc (s1);
//perulangan utk tiap string
until
(s1 >= t);
inc(t1);
//perulangan untuk tiap kasus
until
(t1 >= t);
{menampilkan hasil setelah besar-kecil}
for
i:=
1
to
t
do
writeln
(text[i]);
end
.
var
t :
shortint
;
n :
1..100000
;
ni :
array
[
1..100000
]
of
integer
;
masalah,i,k :
integer
;
rata2 :
real
;
begin
read (t);
for
k:=
1
to
t
do
begin
readln (n);
rata2:=
0
;
for
i:=
1
to
n
do
begin
read (ni[i]);
rata2:= rata2 + ni[i] ;
end
;
rata2:= rata2 / n ;
masalah:=
0
;
for
i:=
1
to
n
do
if
(ni[i] < rata2)
then
inc (masalah);
writeln
(masalah);
end
;
end
.
0 komentar:
Posting Komentar