Program Perkalikan Matriks dengan Skalar

1. Identifikasi Masalah
=> Membuat program mengalikan matriks dengan suatu skalar

2. Menentukan Input dan Output
Input :
(q + i * klm + j)
brsA;
klmA;
brsB;
klmB;
Output :
*(q + i * klm + j)
Masukan(a, brsA, klmA)
 Masukan(b, brsB, klmB)
Tampilkan(a, brsA, klmA
Tampilkan(b, brsB, klmB)
Kali(a, b, c, brsA, klmA, brsB, klmB)
Tampilkan(c, brsA, klmB)

3. Membuat Flowchart atau Algoritma
Algoritma Skalar
{  program mengalikan matriks dengan suatu skalar }
Deklarasi
brs,klm, i,j,k : integer
Deskripsi
for i ß 1 to brs do
for j ß 1 to klm do
write(‘ Elemen [‘+ (i + 1) +’][‘+(j + 1)+’]?’)
read(q + i * klm + j)
for i ß 0 to brs do
for j ß 0 to klm do
write(‘  ‘)
write( *(q + i * klm + j) )
for i ß 0 to  bA do
for jß 0 to kB do
*(z + i * bB + j) ß 0;
For k ß 0 to  kA do
*(z + i * bB + j) += *(p + i * kA + k) * (*(q + k * kB + j))
Write(‘\tPROGRAM    : PERKALIAN MATRIKS DENGAN SKALAR\n’)
awal:
Write(‘\n SYARAT...!!!\n’)
Write(‘Jumlah Kolom A HARUS SAMA dengan Baris B\n\n’)
Write(‘ Jumlah Baris Matriks A? ’)
Read(brsA)
Write(‘Jumlah Kolom Matriks A? ’)
Read(klmA)
Write(‘Jumlah Baris Matriks B? ’)
Read(brsB)
Write(‘Jumlah Kolom Matriks B? ’)
Read(klmB)
if(klmA != brsB)
        Write(‘Perkalian TIDAK Dapat Dilakukan’)
        Write(‘Jumlah Kolom A TIDAK Sama Dengan Jumlah Baris B’)
else
        a ß (int *) malloc(brsA * klmA * 4)
        b ß (int *) malloc(brsB * klmB * 4)
        c ß (int *) malloc(brsA * klmB * 4)

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

Write(‘\n Matriks A‘)
Tampilkan(a, brsA, klmA);
Write(‘\n Matriks B‘)
Tampilkan(b, brsB, klmB);
Kali(a, b, c, brsA, klmA, brsB, klmB);
Write(‘n Matriks A x B‘)
Tampilkan(c, brsA, klmB);
Write(\’n\n Apakah Anda Ingin Mengulang [Y/N] ? ‘)
read(m)
if (m == 'y' || m== 'Y')
goto awal;
else if (m == 'n' || m== 'N')

goto akhir;


4. Implementasi 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;
}


5. Test Menggunakan Data
Input : 
Jumlah Baris Matriks A : 2
Jumlah Kolom Matriks A : 2
Jumlah Baris Matriks B : 2
Jumlah Kolom Matriks B : 2
Koordinat Inputan [y][x]
Contoh : ordo 2x2
[1][1]  [1][2]
[2][1]  [2][2]
Input Matriks A :
Elemen [1][1] : 2
Elemen [1][2] : 1
Elemen  [2][1] : 2
Elemen [2][2] : 1
Input Matriks B :
Elemen [1][1] : 2
Elemen [1][2] : 1
Elemen  [2][1] : 2
Elemen [2][2] : 1
Output :
Matriks A :
2 1
2 1
Matriks B :
2 1
2 1
Matriks A x B :
6 3
6 3


6. Eksekusi


Comments