Kamis, 15 Juni 2017

workshop 9

Buatlah algoritma dan program mengalikan matriks dengan suatu skalar (konstanta).


1.       Identifikasi masalah
→ mengalikan matriks dengan suatu skalar (konstanta)

2.       Menentukan input dan output
→input                 : q,  brs, klm, i, j ,k          

→output             :matriks a=
                           Matriks b=
                           Matriks a x b=

3.       Membuat algoritma/flowchart
Deklarasi:
q,  brs, klm , i, j,k              :integer
for i ← 0 to brs do then i++
for j ← 0 to klm do then j++
write(‘ Elemen (i + 1), (j + 1)’)
end for
end for
         
for i ← 0 to brs do then i++
for j ← 0 to klm do then j++
write((‘q + i * klm + j) ‘)
end for
end for

for i  ←0 to bA do then i++
for j ←0 to kB to then  j++
(z + i * bB + j) ← 0;
For k ← 0 to kA do then  k++
(z + i * bB + j) +=← (p + i * kA + k) * (*(q + k * kB + j))
End for
End for
End for

4.       Test menggunakan data
→input                 :jumlah baris dan kolom matriks A=[2][3]
                             jumlah baris dan kolom matriks B=[3][2]
                             koordinat inputan misalkan berordo=[2][2]

→output             :matriks A x B=|12           12|
                                                    -1            12        

5.       Implementasikan dengan c++
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void Masukan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        for(j = 0; j < klm; j++) {
            cout << " Elemen [" << (i + 1) << "][" << (j + 1) << "]? ";
            scanf("%d", (q + i * klm + j));
        }
    }
}

void Tampilkan(int *q, int brs, int klm) {
    int i, j;
    for(i = 0; i < brs; i++) {
        cout << endl;
        for(j = 0; j < klm; j++) {
            cout <<" ";
            cout << *(q + i * klm + j) << "\t";
        }
    }
    cout << endl;
}

void Kali(int *p, int *q, int *z, int bA, int kA, int bB, int kB) {
    int i, j, k;
    for(i = 0; i < bA; i++) {
        for(j = 0; j < kB; j++) {
            *(z + i * bB + j) = 0;
            for(k = 0; k < kA; k++) {
                *(z + i * bB + j) += *(p + i * kA + k) * (*(q + k * kB + j));
            }
        }
    }
}

int main() {
cout<<"\t\t\tPROGRAM    : PERKALIAN MATRIKS DENGAN SKALAR\n";
awal:
    int *a, *b, *c, brsA, klmA, brsB, klmB;
    cout<<"\n SYARAT...!!!\n";
    cout<<" Jumlah Kolom A HARUS SAMA dengan Baris B\n\n";
    cout << " Jumlah Baris Matriks A? ";
    cin >> brsA;
    cout << " Jumlah Kolom Matriks A? ";
    cin >> klmA;
    cout << " Jumlah Baris Matriks B? ";
    cin >> brsB;
    cout << " Jumlah Kolom Matriks B? ";
    cin >> klmB;
    if(klmA != brsB) {
        cout << " Perkalian TIDAK Dapat Dilakukan." << endl;
        cout << " Jumlah Kolom A TIDAK Sama Dengan Jumlah Baris B." << endl;
    } else {
        a = (int *) malloc(brsA * klmA * 4);
        b = (int *) malloc(brsB * klmB * 4);
        c = (int *) malloc(brsA * klmB * 4);

        cout << "\n Kordinat Inputan [y][x]" ;
        cout << "\n Contoh: ordo 2x2" ;
        cout << "\n [1][1]\t[1][2]\t" ;
        cout << "\n [2][1]\t[2][2]\t" ;
        cout << "\n\n Input Matriks A:\n" ;
        cout << " ----------------\n";
        Masukan(a, brsA, klmA);
        cout << "\n Input Matriks B:\n" ;
        cout << " ----------------\n";
        Masukan(b, brsB, klmB);

        cout << "\n Matriks A:" << endl;
        Tampilkan(a, brsA, klmA);
        cout << "\n Matriks B:" << endl;
        Tampilkan(b, brsB, klmB);
        Kali(a, b, c, brsA, klmA, brsB, klmB);
        cout << "\n Matriks A x B:" << endl;
        Tampilkan(c, brsA, klmB);
    }
cout<<"\n\n Apakah Anda Ingin Mengulang [Y/N] ? "  ;
char m ;
cin>>m;
if (m == 'y' || m== 'Y')
goto awal;
else if (m == 'n' || m== 'N')
{
goto akhir;
}
akhir:
cout<<"\n\n\t\t\t    \"TERMA KASIH\"";
    return 0;
}

6.  hasil compilernya


Share:

0 komentar:

Posting Komentar

Recent Post

BTemplates.com

Diberdayakan oleh Blogger.

Beauty

Breaking News

Labels