RSS

Hasil di TOKI learning center

               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.
 
 
Soal Angka 1
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.
  NB: ini soal pertama yg aku selesaikan dlm TLC pada th 2010 , dpt bantuan dari temenku Muhammad Yafi (peraih medali EMAS 2 dlm OSN komputer th 2011) thanks yafi :)

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 >= 1then
         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.
 
kode penyelesaiannku sbb. . .
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.

kode penyelesaiannku sbb. . .
{       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.

kode penyelesaiannku sbb. . .
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.

kode penyelesaiannku sbb. . .
{       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.

kode penyelesaiannku sbb. . .
{       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.

kode penyelesaiannku sbb. . .
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.


Oke , sekian saja yg dapat aku bagikan , , semoga dapat membantu bagi kalian yg mendapat kesulitan dalam menyelesaikan soal2 tersebut dalam TOKI Learning Center. . . 
keep CODING :) 






  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 komentar:

Posting Komentar