Algoritma
tersebut merupakan algoritma untuk menjumlahkan bilangan-bilangan polinom.
Algoritma ini menggunakan singgle link list. Dalam fungsi tersebut kita akan
menampilkan penjumlahan polinom yang diinputkan oleh user. Node digunakan untuk
menyimpan elemen yang tidak nol yaitu koefisien dan pangkatnya. Untuk membuat algoritmanya kita membutuhkan
file header berupa include stdio.h dan malloc.h (untuk mengaktifkan fungsi malloc).
Kemudian untuk mendeklarasikan atau membuat algoritma berupa link list kita
harus membuat struct, pada algoritma ini kita buat struct node. Selanjutnya
kita deklarasikan variabel pointer
global yang akan digunakan dalam link list yaitu berupa float coef, int expo
dan deklarasi kepala link list yaitu struct node *link. Untuk dapat membuat
sebuah algoritma yang bisa menjumlah kan nilai polinom maka kita harus membuat
beberapa fungsi hal ini untuk mempermudah kita dalam mengerjakan dan memahami
program. Fungsi yang dapat dimasukan agar dapat menghitung nilai polinom dapat
berupa fungsi insert yaitu fungsi yang digunakan untuk memasukan data baru.
Data baru yang dimasukan kedalam linked list oleh fungsi insert merupakan data
yang dimasukan oleh user melalui fungsi enter. fungsi poly_add digunakan untuk
menempatkan data baru ke data baru ke dalam link list dengan posisi yang tepat.
Fungsi enter adalah fungsi yang digunakan oleh user untuk memasukan data berupa
koefisien dan pangkat pada polinom yang selanjutnya dimasukan ke dalam linked
lis oleh fungsi insert. Fungsi display digunakan untuk menampilkan data yang
terdapat di dalam link list.
Untuk
fungsi yang pertama yaitu fungsi insert. Fungsi ini akan dipanggil dari fungsi
main untuk meminta data baru yang akan dimasukkan ke dalam link list. Data baru
yang dimasukan dalam fungsi ini merupakan data yang telah diinput secara
langsung oleh user melalui fungsi enter. Fungsi insert ini akan digunakan
berulang-ulang untuk meminta masukan data baru. Setiap kali fungsi fungsi
dipanggil kita harus memesan tempat pada memory komputer untuk menampung data
baru. Dalam ha ini alamat memory yang dipesan disimpan dalam variabel pointer
node. Program akan meminta kita untuk memasukan data baru yang akan dimasukan
ke memory melalui variabel pointer node. Apabila data yang kita masukan berupa
null atau memenuhi syarat ex>start->expo maka program akan berakhir atau
langsung menuju ke return atau berakhir. Tetapi apabila data yang dimasukan
tidak berupa null atau tidak memenuhi syarat yang kedua maka program akan
diteruskan ke kondisi yang kedua yaitu terjadinya perulangan-perulangan masukan
data sampai data yang dimasukkan memenuhi syarat ptr->link->expo>ex.
Fungsi
yang kedua adalah fungsi poly_add. Fungsi ini merupakan fungsi untuk memasukan
data yang telah didapatkan dari fungsi insert ke dalam link list. Kita tidak
boleh sembarangan dalam memasukan data ke dalam link list, kita perlu melakukan
pengecekan untuk menemukan posisi yang tepat dimana data akan diletakkan di
dalam link list. Sehingga data yang kita peroleh merupakan data dalam posisi
terurut. Untuk memasukan data ke dalam linked list tidak semua data
diberlakukan sama. Karena kita ingin memasukan data sambil mengurutkan maka
kita perlu memeriksa posisi mana node akan dimasukan ke dalam linked list.
Pertama-tama
kita harus memeriksa apakah pada linked list sudah terdapat data dengan fungsi
if (p1==NULL && p2==NULL). Bila belum ada ada data pada link list maka
data baru dianggap sebagai data pertama sekaligus data terakhir. Oleh karena
itu pointer ini akan langsung menuju ke return atau berakhir. Lain halnya
apabila sudah terdapat data pada link list, kita masih perlu melakukan
pemeriksaan apakah data baru akan disisipkan sebagai data pertama atau sebagai
data terakhir. Namun sebelumnya kita perlu melakukan pengecekan terhadap data
yang baru diinputkan. Apabila di dalam linked list sudah terdapat data yang
sama if(p1->expo == p2->expo) maka kita hanya perlu menambahkan koefisien
data baru dengan koefisien data yang sudah terdapat pada linked list. Tetapi
apabila data yang dimasukan berupa syarat if(p1->expo > p2->expo) dan if(p2->expo
> p1->expo) maka yang kita proses adalah data lebih besar misalkan data
P1 lebih besar dari dua maka data yang diproses adalah data p1 dan sebaliknya.
Fungsi
enter merupakan fungsi yang digunakan dalam inputan data yang diperlukan dalam
penghitungan polinomial inputan data tersebut berupa berapa banyak deret
polinom yang diinginkan, berapa koefisien bilangan polinom dan berapa pangkat
sebuah bilangan polinom yang diinginkan.
Nilai-nilai yang dimasukan ke dalam fungsi enter ini selanjutnya akan diproses
oleh fungsi insert untuk dimasukan ke dalam linked list.
Fungsi
display adalah fungsi yang digunakan untuk menampilkan data yang terdapat di
dalam linked list. Fungsi display disini sangat sederhana fungsi display disini
hanya menampilkan data dalam linklist yang memenuhi syarat while(ptr!=NULL)
artinya data yang memenuhi syarat tidak null akan terus ditampilkan. Sedangkan
data yang dengan syarat if (ptr==NULL) akan langsung berakhir atau return.
-
Proses
penjumlahan polinom di dalam linked list
Pada
linked list elemen polinom diurutkan berdasarkan dari pangkat terendah sampai
pangkat tertinggi. Pada penambahan elemen baru secara umum membentuk suatu
simpul baru, tetapi tidak selalu demikiaan. Fungsi poly_add memeriksa apakah
terdapat simpul dengan pangkat seperti pangkat elemen baru yang akan
ditambahkan. Apabila terdapat simpul dengan pangkat yang sama maka nilai
koefisiennya akan dijumlahkan tanpa membentuk simpul yang baru. Jika hasil
penambahan ini menyebabkan keofisien bernilai
nol maka simpul ini harus dihapus dari linked list. Apabila pada linked
list polinom belum terdapat simpul dengan pangkat yang sama dengan pangkat
elemen baru maka dibentuk simpul baru.
Penjumlahan
dua polinom akan membentuk polinom hasil. Penjumlahan dilakukan dengan
membandingkan nilai pangkat. Jika nilai pangkat pada simpul-simpul kedua
polinom sama besar dan hasil jumlah koefisiennya sama dengan nol maka abaikan
kedua simpul ini. Apbila hasil jumlah koefisiennya bukan sama dengan nol maka
tambahkan data ini ke polinom hasil. Proses dilanjutkan dengan simpul berikutnya
pada masing-masing polinom.
Jika
nilai pangkat pada simpul polinom pertama lebih kecil dari nilai pangkat pada
simpul polinom kedua maka simpul polinom pertama ini yang disalin ke polinom
hasil dan pointer dipindah ke simpul berikutnnya pada polinom pertama.
Jika
nilai pangkat pada simpul polinom pertama lebih besar daripada nilai pangkat
pada simpul polinom ke dua maka simpul polinom kedua ini yang disalin ke
polinom hasil dan pointer pindah ke simpul berikutnya pada polinom kedua.
berikut algoritma lengkap dapat didownload disini.
1 komentar:
kok file algoritmanya tidak bisa dibuka ya kak
Posting Komentar