Listing program

Modifikasi 2 Listing program

#include<stdio.h> int plusmin(int m, int n, int A[15][15], int B[15][15], int C[15][15], int o);

main(){

FILE *P; int c, i, m1=1, m2=1, n1=0, n2=0, j, o, A[15][15],

B[15][15], C[15][15]; char namafile[40]; Awal: printf("Input nama file matriks A : "); gets(namafile); P=fopen(namafile, "r"); while (P==NULL){

printf("Tidak bisa membuka file %s \n", namafile); printf("Masukkan kembali file yang akan ditampilkan :

"); gets(namafile); P=fopen(namafile, "r");

} printf("Matriks A\n"); c=getc(P); while(c!=EOF){ // Cek jumlah baris

putchar(c); if(c=='\n') m1+=1; c=getc(P);

} fclose(P); P=fopen(namafile, "r"); c=getc(P); while(c!=EOF && c!='\n'){ //Cek jumlah kolom

if(c!='\t') n1+=1; c=getc(P);

} fclose(P); P=fopen(namafile, "r"); for (i=0; i<m1; i++){

for (j=0; j<n1; j++)

fscanf(P,"%d",&A[i][j]);

} fclose(P); printf("\nInput nama file matriks B : "); gets(namafile); P=fopen(namafile, "r"); while (P==NULL){

printf("Tidak bisa membuka file %s \n", namafile); printf("Masukkan kembali file yang akan ditampilkan :

"); gets(namafile); P=fopen(namafile, "r");

} printf("Matriks B\n"); c=getc(P); while(c!=EOF){ // Cek jumlah baris

putchar(c); if(c=='\n') m2+=1; c=getc(P);

} fclose(P); P=fopen(namafile, "r"); c=getc(P); while(c!=EOF && c!='\n'){ // cek jumlah kolom

if(c!='\t') n2+=1; if(c!='\t') n2+=1;

for (j=0; j<n2; j++)

fscanf(P,"%d",&B[i][j]);

} fclose(P); if (m1==m2 && n1==n2){

ulang: printf("\nPilih operasi:\t (1) Penjumlahan\t (2)

Pengurangan\nPilihan : "); scanf("%d", &o); if (o==1){ sprintf(namafile, "hasil_jumlah.txt"); P=fopen(namafile, "w"); plusmin(m1, n1, A, B, C, o); printf("\nHasil penjumlahan disimpan di file

%s", namafile);

for (i=0; i<m1; i++){ for (j=0; j<n1; j++)

fprintf(P, "%d\t", C[i][j]); fprintf(P, "\n");

} } else if (o==2) { sprintf(namafile, "hasil_kurang.txt"); P=fopen(namafile, "w"); plusmin(m1, n1, A, B, C, o); printf("\n"); printf("\nHasil penjumlahan disimpan di file

%s", namafile);

for (i=0; i<m1; i++){ for (j=0; j<n1; j++)

fprintf(P, "%d\t", C[i][j]);

fprintf(P, "\n"); }

} else { printf("\nUlangi pilihan"); goto ulang; } } else { printf("\nMatriks A dan matriks B tidak dapat dijumlahkan dan dikurangkan \nSilahkan ulangi!\n\n"); fclose(P); goto Awal;

} fclose(P);

int plusmin(int m, int n, int A[15][15], int B[15][15], int C[15][15], int o){

int i, j; for (i=0; i<m; i++){

for (j=0; j<n; j++){

if (o==1) C[i][j]=A[i][j]+B[i][j]; if (o==2)

C[i][j]=A[i][j]-B[i][j];

Tampilan program

Gambar 5.3 Program penjumlahan dan pengurangan matriks dengan input dari file dan file yang dibuatnya

Analisa program

Program ini menginputkan data matriks dari suatu file yang telah dibuat sebelumnya. Isi file tersebut berupa elemen matriks yang penulisannya seperti file pada Gambar 5.3. Matriks A dan matriks B diinput dari file yang dibaca oleh program dengan mode r saat membuka file. Karena hanya membaca file tanpa mengetahui jumlah baris dan kolom matriks yang dibentuk, maka dilakukan pengecekan jumlah baris dan kolom sepeti pada listing program. Kolom dicek dengan cara mengecek karakter di satu baris. Untuk baris dilakukan perhitungan dengan menghitung \n yang terdapat pada file. Karena pengecekan disini berupa karakter (char) maka ada ketentuan yang harus dipenuhi yaitu bilangan yang berupa elemen matriks (misal a) pada file harus memenuhi 0 ≤ 𝑎 ≤ 9, k arena satu elemen akan dibaca hanya satu karakter, dan satu karakter tersebut akan menjadi elemen matriks yang dibaca. Matrisk akan ditampilkan dengan fungsi putchar. Setelah inputan matriks akan ada opsi pengoperasian apakan penjumlahan atau pengurangan, opsi yang dipilih akan melakukan operasi di fungsi plusmin dan akan menyimpan hasil operasi di file seperti file pada Gambar 5.3.