Pada
postingan kali ini mencakup pembelajaran pada Modul VI mengenai Array
2-dimensi, Pointer dan Struktur. Disini saya hanya menjelaskan secara singkat
mengenai penerapan Array 2-Dimensi yang diterapkan pada pembuatan program
perhitungan matrik 2x2 dengan menu-menu seperti pertambahan, pengurangan,
perkalian, dan pembagian yang diterapkan pada bahasa pemrograman C.
Berikut Video
dari proses pembuatan perhitungan matrik (No.Reg = 19 % 4 = 3):
Link Youtube: http://www.youtube.com/watch?v=LAFOXQ-Yu68
Coding (Tugs VI 1)
|
Source
Code:
|
1. #include <stdio.h> //pemanggilan
header standard input output
2. #include <stdlib.h> //pemanggilan
header standard library
3.
4. int main(void) //fungsi
utama
5. {
6. float mat_a [2][2],
mat_b [2][2], hasil[2][2], detB, mat_b_invers[2][2; //deklarasi matrik array 2
dimensi
7. int pilih,i,j,k,keluar=1;
8.
9. do{
10. printf("PERHITUNGAN MATRIX\n");
11. printf("[1]penjumlahan\n[2]pengurangan\n[3]perkalian\n[4]pembagian\n[0]keluar\n\n");
12. printf("Masukkan Pilihan= ");
13. scanf("%d",&pilih); //menerima
inputan dan menyimpan
14.
15. switch (pilih) //pernyataan
berdasarkan variabel inputan dari user
16. {
17. case 1: //kondisi
yang dijalankan jika user menginputkan angka 1
18. //input matrix a 2x2
19. for (i=0; i<2; i++) //perulangan
untuk baris
20. {
21. for (j=0; j<2; j++) //perulangan
untuk kolom
22. { printf("masukkan isi matriks A [%d][%d] ",i,j); //meminta inputan dari user untuk isi dari setiap matrik
a
23. scanf("%f",&mat_a[i][j]); //menyimpan
data inputan
24. }
25. }
26. printf("\n"); //baris
baru
27.
28. //input matrix b 2x2
29. for (i=0; i<2; i++) //perulangan
untuk baris
30. {
31. for (j=0; j<2; j++) //perulangan
untuk kolom
32. {
33. printf("masukkan isi matriks B [%d][%d] ",i,j); //meminta inputan dari user untuk isi dari setiap matrik
b
34. scanf("%f",&mat_b[i][j]); //menyimpan
data inputan
35. }
36. }
37.
38. //pertambahan matrix
39. printf("\n hasil pertambahan \n\n");
40. for (i=0; i<2; i++)
41. {
42. for (j=0; j<2; j++)
43. {
44. hasil[i][j]=mat_a[i][j]+mat_b[i][j]; //menampilkan
hasil pertambahan matrik a dan b
45. }
46. }
47. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t
%2.0f\t \n",mat_a[0][0],mat_a[0][1],
mat_b[0][0], mat_b[0][1], hasil[0][0], hasil[0][1]);
48. printf("\t\t + \t\t\t =\n");
49. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t
%2.0f\t \n\n\n",mat_a[1][0],mat_a[1][1],
mat_b[1][0], mat_b[1][1], hasil[1][0], hasil[1][1]);
50. break;
51.
52. case 2: //kondisi
yang dijalankan jika user menginputkan angka 2
53. //input matrix a 2x2
54. for (i=0; i<2; i++)
55. {
56. for (j=0; j<2; j++)
57. {
58. printf("masukkan isi matriks A [%d][%d] ",i,j);
59. scanf("%f",&mat_a[i][j]);
60. }
61. }
62. printf("\n");
63.
64. //input matrix b 2x2
65. for (i=0; i<2; i++)
66. {
67. for (j=0; j<2; j++)
68. {
69. printf("masukkan isi matriks B [%d][%d] ",i,j);
70. scanf("%f",&mat_b[i][j]);
71. }
72. }
73.
74. //pengurangan matrix
75. printf("\n hasil pengurangan \n\n");
76. for (i=0; i<2; i++)
77. {
78. for (j=0; j<2; j++)
79. {
80. hasil[i][j]=mat_a[i][j]-mat_b[i][j]; //menampilkan
hasil pengurangan matrik a dengan b
81. }
82. }
83. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t
%2.0f\t \n",mat_a[0][0],mat_a[0][1],
mat_b[0][0], mat_b[0][1], hasil[0][0], hasil[0][1]);
84. printf("\t\t - \t\t\t =\n");
85. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t %2.0f\t
\n\n\n",mat_a[1][0],mat_a[1][1],
mat_b[1][0], mat_b[1][1], hasil[1][0], hasil[1][1]);
86. break;
87.
88. case 3: //kondisi
yang dijalankan jika user menginputkan angka 3
89. //input matrix a 2x2
90. for (i=0; i<2; i++)
91. {
92. for (j=0; j<2; j++)
93. {
94. printf("masukkan isi matriks A [%d][%d] ",i,j);
95. scanf("%f",&mat_a[i][j]);
96. }
97. }
98. printf("\n");
99.
100. //input matrix b 2x2
101. for (i=0; i<2; i++)
102. {
103. for (j=0; j<2; j++)
104. {
105. printf("masukkan isi matriks B [%d][%d] ",i,j);
106. scanf("%f",&mat_b[i][j]);
107. }
108. }
109.
110. //perkalian matrix
111. printf("\n hasil perkalian matrik A dan B \n\n");
112. //proses mencari hasil perkalian matrix
113. for(i=0; i<2; i++)
114. {
115. for (j=0; j<2; j++)
116. {
117. for (k=0; k<2; k++)
118.
119. hasil[i][j]=mat_a[i][k]*mat_b[k][j]+mat_a[k][i]*mat_b[k][j];
120. }
121. }
122.
123. //menampilkan hasil perkalian matrix a dan matrix b
124. //printf("= \n\n");
125. for(i=0;i<2;i++)
126. {
127. for(j=0;j<2;j++)
128. {
129. hasil[i][j]=0;
130.
131. for(k=0;k<2;k++)
132. {
133.
134. hasil[i][j]=hasil[i][j]+mat_a[i][k]*mat_b[k][j];
135. }
136. }
137. }
138. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t
%2.0f\t \n",mat_a[0][0],mat_a[0][1],
mat_b[0][0], mat_b[0][1], hasil[0][0], hasil[0][1]);
139. printf("\t\t x \t\t\t =\n");
140. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t
%2.0f\t \n\n\n",mat_a[1][0],mat_a[1][1],
mat_b[1][0], mat_b[1][1], hasil[1][0], hasil[1][1]);
141. break;
142.
143. case 4: //kondisi
yang dijalankan jika user menginputkan angka 4
144. //input matrix a 2x2
145. for (i=0; i<2; i++)
146. {
147. for (j=0; j<2; j++)
148. {
149. printf("masukkan isi matriks A [%d][%d] ",i,j);
150. scanf("%f",&mat_a[i][j]);
151. }
152. }
153. printf("\n");
154.
155.
156. //input matrix b 2x2
157. for (i=0; i<2; i++)
158. {
159. for (j=0; j<2; j++)
160. {
161. printf("masukkan isi matriks B [%d][%d] ",i,j);
162. scanf("%f",&mat_b[i][j]);
163. }
164. }
165.
166. detB
= 1/((mat_b[0][0]*mat_b[1][1])-(mat_b[0][1]*mat_b[1][0]));
167. //mencari nilai determinan dari matrik B
168.
169. mat_b_invers[0][0]
= detB*mat_b[1][1]; //mencari invers setiap nilai pada matrik B
170. mat_b_invers[0][1]
= detB*(-mat_b[0][1]);
171. mat_b_invers[1][0]
= detB*(-mat_b[1][0]);
172. mat_b_invers[1][1]
= detB*mat_b[0][0];
173.
174. printf("\nHasil Pembagian:\n\n");
175. for (i=0; i<2; i++)
176. {
177. for (j=0; j<2; j++)
178. {
179. hasil[i][j]=0;
180. for (k=0; k<2; k++)
181. {
182. hasil[i][j]+=mat_a[i][k]*mat_b_invers[k][j] //mencari
hasil pembagian akhir dari matrik a dan b dengan mengalikan matrik a dengan
hasil invers matrik B
183. }
184. }
185. }
186. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t
%2.0f\t \n",mat_a[0][0],mat_a[0][1],
mat_b[0][0], mat_b[0][1], hasil[0][0], hasil[0][1]);
187. printf("\t\t : \t\t\t =\n");
188. printf("%2.0f\t %2.0f\t \t %2.0f\t %2.0f\t \t %2.0f\t
%2.0f\t \n\n\n",mat_a[1][0],mat_a[1][1],
mat_b[1][0], mat_b[1][1], hasil[1][0], hasil[1][1]);
189. break;
190. case 0: //jika
user menginputkan angka 0
191. keluar=0; //kondisi
variabel keluar bernilai 0
192. system("exit"); //mengeluarkan
program
193. break;
194. default: //jika
user menginputkn angka diluar pilihan
195. printf("Anda menginputkan diluar menu pilihan!!\n\n");
196. break;
197. }
198.
199. }
200. while (keluar==1); //mengulang
kondisi diatas jika uaser menginputkan angka 1-4
201. system("pause"); //menahan
eksekusi program
202. return(0); //mengembalikan
nlai fungsi utama yang bertipe integer
203. }
|
Source code diatas merupakan source code mengenai program
untuk mencari perhitungan matrik ordo 2x2 dengan operasi pertambahan,
pengurangan, perkalian dan pembagian, program ini menggunakan perulangan dan
case untuk menampilkan menu pilihan yang bias diakses dan dipilih oleh user,
jika user memasukkan inputan yang salah pada pemilihan menu maka program akan
mengulang untuk menampilkan menu pilihan pertambahan dan pengurangan memiliki
cara yang sama tapi tidak dengan perkalian dan pembagian, perkalian menggunakan
cara silang dan pembagian harus melewati 2 tahapan yaitu mencari determinan
matrik kedua, kemudian dicari inversnya sesuai dengan rumus yang sudah ada,
kemudian nilai dari matrik A dikalikan dengan hasil invers dari matrik B. Berikut merupakan hasil gambar
setelah program dijalankan.
0 comments:
Post a Comment