Anda di halaman 1dari 3

Disini kita operasikan beberapa bilangan sebagai data untuk mencari mean, median, modus, urutan data, serta

standar deviasi. Pada program ini saya membatasi jumlah bilangan yang dimasukkan dalam larik hanya bisa 100 variasi bilangan bulat, dan untuk masing-masing variasi bisa sangat banyak sekali sejumlah maksimal variabel integer.
Program Larik; uses crt; var x,y : array [1..100] of integer; p,q : string; a,b,c,d,e : integer; i,j : real; begin

Saya menggunakan dua larik yaitu larik pertama sebagai penyimpan bilangannya dan larik kedua untuk menyimpan banyaknya kemunculan dalam data sehingga bila ada data sama diinputkan kembali tidak menambah beban pada larik pertama namun hanya increment nilainya pada larik kedua pada index yang sesuai dengan index pada larik pertama dimana data serupa disimpan.
clrscr; q:='y'; a:=0; b:=0; writeln ('Program Proses Array Bilangan Bulat'); repeat a:=a+1; write ('Masukkan bilangan ke ',a,' = '); readln (c); p:='n'; for d:=1 to b do begin if (x[d]=c) then begin y[d]:=y[d]+1; p:='y' end; end; if (p='n') then begin b:=b+1; x[b]:=c; y[b]:=1; end; write ('Tambahkan Angka Lagi Ke dalam Array ? (y/t) '); readln (q); if (a=100) then q:='t'; until (q='t'); clrscr; writeln ('Program Proses Array Bilangan Bulat'); for d:=1 to b do writeln ('Bilangan ',x[d],' sejumlah ',y[d],' kemunculan'); writeln ('Total Bilangan yang Diinputkan Sebanyak ',a,' Bilangan dengan Variasi Sebanyak ',b,' Bilangan yang Berbeda');

Mean saya hitung dengan mengalikan nilai setiap bilangan pada larik pertama dengan masing2 banyaknya kemunculan pada larik kedua dan menjumlahkannya lalu

membaginya dengan jumlah seluruh bilangan larik kedua yang merupakan banyaknya data yang diinputkan.
d:=0; for c:=1 to b do begin d:=d+(x[c]*y[c]); end; i:=d / a; writeln ('Nilai Mean dari Bilangan-Bilangan Diatas adalah ',i:10:2);

Standar deviasi saya lakukan dengan mengurangi masing-masing data pada larik pertama dengan mean, lalu mengkuadratkannya baru dikalikan banyaknya kemunculan pada larik kedua untuk masing-masing data. setelah semuanya dijumlah lalu dibagi dengan jumlah data sebagaimana direpresentasikan dengan total nilai pada larik kedua. standar deviasinya adalah akar kuadrat dari bilangan ini.
j:=0; for c:=1 to b do begin j:=j+((x[c]-i)*(x[c]-i)) j:=j/a; end; j:=sqrt(j); writeln ('Standar Deviasi dari Bilangan-Bilangan Diatas adalah ',j:10:2);

Shorting saya lakukan dengan bubble short pada larik pertama dengan ikut menukarkan nilai pada larik kedua agar tetap sesuai indexnya.
for c:=1 to (b-1) do begin for d:=1 to (b-c) do begin if (x[d]>x[d+1]) then begin e:=x[d+1]; x[d+1]:=x[d]; x[d]:=e; e:=y[d+1]; y[d+1]:=y[d]; y[d]:=e; end; end; end; write ('Setelah diurutkan Naik Data-Data Tersebut Menjadi : '); for c:=1 to b do begin for d:=1 to y[c] do write (x[c],' '); end; writeln (' '); write ('Setelah diurutkan Menurun Data-Data Tersebut Menjadi : '); for c:=b downto 1 do begin for d:=1 to y[c] do write (x[c],' '); end; writeln (' ');

Nilai median saya cari dengan membagi dua jumlah data sebagai posisi nilai tengah, lalu menjumlahkan data-data di larik kedua dari index terkecil hingga nilainya lebih besar dari posisi nilai tengah tadi. setelah didapat nilainya, maka index itulah yang digunakan untuk memanggil data dari larik pertama yang merupakan median.
c:=a div 2; e:=0; repeat e:=e+1; d:=d+y[e]; until (d>c); writeln ('Median dari Data-Data Tersebut adalah : ',x[e]); writeln ('Nilai Data Terkecil adalah ',x[1],' Sedangkan Nilai Data Terbesar adalah ',x[b]);

Modus dicari dengan melihat data terbesar pada larik kedua. data pertama dengan index yang sama itulah modusnya. disini bila ada dua kemungkinan dengan banyaknya kemunculan sama, yang akan ditampilkan adalah bilangan yang lebih kecil.
d:=1; for c:=1 to b do if (y[c]>y[d]) then d:=c; writeln ('Modus dari Data-Data Tersebut adalah : ',x[d],' dengan Sejumlah ',y[d],' Kemunculan'); end.

diambil dari solusi tugas matrikulasi mata kuliah algoritma dan struktur data Magister Sistem Informasi Universitas Diponegoro

Anda mungkin juga menyukai