latest Post

Program matrix operations with C ++


Buatlah program untuk melakukan operasi matematika pada matriks (perkalian, penjumlahan, transpose) dengan alokasi memory!

#include <iostream>
#include <conio.h>
#include <math.h>
#include <limits>
#include <cstdlib>
#include <cstring>
using namespace std;

int **A,**B,**C;
int ib, ik, row1, row2, col1, col2;
char pil;
int kata;
char val [100];

int validasi()
{
    do
    {
        kata=0;
        cin>>val;
        for(int i=0; i<strlen(val); i++)
        {
            if(isdigit(val[i])==0)
                kata++;
        }
        if(kata !=0)
            cout<<"Input salah !\n"<<endl;

    }
 while(kata!=0);
    return 0;
}


int perkalian_matriks();
int penjumlahan_matriks();
int pengurangan_matriks();
int transpose_matriks();
int inputan();
int tampilkan_matriks();

int main() {
awal:
cout << "\t\t  PROGRAM PENJUMLAHAN PENGURANGAN PERKALIAN  " << endl;
cout << "\t        DAN TRANSPOSE MATRIKS     " << endl;
cout << endl << endl;

cout << "MENU PROGRAM" << endl;
cout << "1. Perkalian Matriks" << endl;
cout << "2. Penjumlahan Matriks" << endl;
cout << "3. Transpose Matriks" << endl;
cout << "4. Keluar" << endl;
cout << "\n\tInput Pilihan Anda : ";
validasi(); pil=atoi(val);
cout <<"==================================================================="<< endl;
switch (pil){
 case 1 : perkalian_matriks();
 break;

 case 2 : penjumlahan_matriks();
 break;

 case 3 : transpose_matriks();
 break;

 case 4 :{
  cout<<"Bye ";
    return 0;
 }
 break;

 default : cout <<"Input tidak ada dalam pilihan !" << endl;
 
 }
 getch();
 int pilihan;
 cout << "\nApakah anda ingin mencoba lagi? jika ya tekan <1>, tidak tekan <2>." << endl;
 cout << "Pilihan anda : ";
 validasi(); pilihan=atoi(val);
 cout << endl;
 if(pilihan==1) {
  system("CLS");
  goto awal;
 }
 else{
  cout << "\nTerima Kasih Telah Menggunakan Program ini." << endl;
  }
 }


int inputan(){
 cout << "\nInput jumlah baris Matriks A : ";
 validasi(); row1=atoi(val);

 cout << "Input jumlah kolom Matriks A : ";
 validasi(); col1=atoi(val);

 cout << "\nInput jumlah baris Matriks B : ";
 validasi(); row2=atoi(val);

 cout << "Input jumlah kolom Matriks B : ";
 validasi(); col2=atoi(val);
 cout << endl;
}

int tampilkan_matriks(){
 cout << "\nMatriks A"<< endl;
 A=(int**) malloc(row1*sizeof(int*));
 for (ib=0; ib<row1; ib++){
  A[ib]=(int*)malloc(col1*sizeof(int));
  for (ik=0; ik<col1; ik++){
   cout << "Input baris ke "<< (ib+1) <<" kolom ke " << (ik+1) << " : ";
   validasi();  A[ib][ik]=atoi(val);
  }
 }

 cout << "\nMatriks B"<< endl;
 B=(int**) malloc(row2*sizeof(int*));
 for (ib=0; ib<row2; ib++){
  B[ib]=(int*)malloc(col2*sizeof(int));
  for (ik=0; ik<col2; ik++){
   cout << "Input baris ke "<< (ib+1) <<" kolom ke " << (ik+1) << " : ";
   validasi();  B[ib][ik]=atoi(val);
  }
 }
 
 //alokasi memori untuk matriks C
C=(int**) malloc(row1*sizeof(int*));
for(int i=0;i<row1;i++)
C[i]=(int*)malloc(col2*sizeof(int));

 cout <<"\nMatriks A" << endl;
 for (ib=0; ib<row1; ib++){
  for(ik=0; ik<col1; ik++){
   cout << A[ib][ik] << "     ";
  }
 cout << endl;
 } 

 cout << "\nMatriks B" << endl;
 for (ib=0; ib<row2; ib++){
  for(ik=0; ik<col2; ik++){
   cout << B[ib][ik] << "     ";
  }
 cout << endl;
 }
 cout << "==================================================================="<< endl;
}

int perkalian_matriks() {
 cout<<"Jumlah Colom Matriks A harus sama dengan Baris Matriks B!"<<endl;
 do{
  inputan();
 }while (col1 != row2);
 tampilkan_matriks();
 

 cout << "\nMatriks A * Matriks B ";
 for (ib=0; ib<row1; ib++){
  for (ik=0; ik<col2; ik++){
   C[ib][ik]=0;
   for (int j=0; j<col1; j++){
    C[ib][ik] = C[ib][ik] + (A[ib][j] * B[j][ik]);
   }
  }
 }

 cout << endl;
 for (ib=0; ib<row1; ib++){
  for(ik=0; ik<col2; ik++){
   cout << C[ib][ik] << "     ";
  }
 cout << endl;
 }
}

int penjumlahan_matriks(){
 cout<<"Jumlah Colom dan Baris Matriks A harus sama dengan Matriks B!"<<endl;
 do{
  inputan();
 }while(col1 != col2 || row1 != row2);
 tampilkan_matriks();
 

 cout <<"\nMatriks A + Matriks B";
 for (ib=0; ib<row1; ib++){
   for (ik=0; ik<col2; ik++){
    C[ib][ik] = A[ib][ik] + B[ib][ik];
   }
 }

 cout << endl;

 for (ib=0; ib<row1; ib++){
  for(ik=0; ik<col1; ik++){
   cout << C[ib][ik] << "\t";
  }
 cout << endl;
 }
}

int transpose_matriks(){
 cout << "\nInput jumlah baris Matriks : ";
 validasi();  row1=atoi(val);

 cout << "Input jumlah kolom Matriks : ";
 validasi();  col1=atoi(val);

cout << endl;

 cout << "\nMatriks A"<< endl;
 for (ib=0; ib<row1; ib++){
  for (ik=0; ik<col1; ik++){
   cout << "Input baris ke "<< (ib+1) <<" kolom ke " << (ik+1) << " : ";
   validasi();  A[ib][ik]=atoi(val);
  }
 }
 
 cout <<"\nMatriks" << endl;
 for (ib=0; ib<row1; ib++){
  for (ik=0; ik<col1; ik++){
   cout << A[ib][ik]<<" ";
  }
 cout << endl;
 }

 cout <<"\nTranspose Matriks" << endl;
 for (ib=0; ib<col1; ib++){
  for (ik=0; ik<row1; ik++){
   cout << A[ik][ib]<<"  ";
  }
 cout << endl;
 }
 
 for(int i=0;i<row1;i++)
free(A[i]);
for(int i=0;i<row2;i++)
free(B[i]);
for(int i=0;i<row1;i++)
free(C[i]);
free(A);
free(B);
free(C);

getch();
 }





About Unknown

Unknown
Recommended Posts × +

1 comments: