DIKTAT

Selasa, 24 Mei 2016

mengalikan matrik dengan vektor

identifikasi masalah
mengalikan matrik 3x2 dengan vektor
menentukan input dan output
input : matrik [2][3]={0,2,7,3,4,5};
             vektor[3]={7,3,2}
output: hasil[2]
membuat algoritma
procedur kali matrik (input/output i,j,matrik vektor)
deklarasi
i,j= integer
deskripsi
for i<- 1 to  2 do
for j<- 1 to3 do
([i,j]=([i,j]+a[i,j]*b[i,j])
end for
end for
end 

mengimplementasikan ke dalam c++

source code 

#include <iostream>
using namespace std;
void kali(int matrik[2][3],int vektor[3],int hasil[2]){
    for(int i=0;i<2;i++){
        for(int k=0;k<3;k++)
            hasil[i]=hasil[i]+(matrik[i][k]*vektor[k]);
    }
}
void cetakm(int hasil[][3]){
    for(int i=0;i<2;i++){
        for(int j=0;j<3;j++)
            cout<<hasil[i][j]<<" ";
            cout<<endl;
    }
}
void cetakv(int vektor[]){
    for(int i=0;i<3;i++){
        cout<<vektor[i]<<endl;
    }
}
void cetak(int hasil[]){
    for(int i=0;i<2;i++){
        cout<<hasil[i]<<endl;
    }
}
int main(int argc, char** argv) {
    int matrik[2][3]={0,2,7,3,4,5}, vektor[3]={7,3,2},hasil[2]={0};
    kali(matrik,vektor,hasil);
    cout<<"Matrik A\n";
    cetakm(matrik);
    cout<<"\nVektor b\n";
    cetakv(vektor);
    cout<<"\nHasil kali\n\n";
    cetak(hasil);
    return 0;
}
 

output




uji data matrik dengan vektor







 
  

Senin, 16 Mei 2016

BUBBLE SORT



BUBBLE SORT
Bubble sort adalah salah satu algoritma untuk sorting data, atau dalam kata lain mengurutkan data dari yg terbesar ke yg terkecil atau sebalik nya (ascending atau descending). Bubble sort (metode gelembung) adl algoritma pengurutan dengan cara melakukan penukaran dengan data  tepat disebelahnya, algoritma ini mengulang proses perbandingan antara tiap-tiap elemen array dan menukarnya apabila urutan nya salah. metode gelembung ini di inspirasikan gelembung sabun yg berada di permukaan air.

Input output :
Data sebelum di urutkan 8 6 2 1
Data setelah diurutkan 1 2 6 8
            Algoritma :

Deklarasi
            Data : i, j, k, tmp, jumlah data : integer
Deskripsi
            For iß1 to do n-1 do
For j ßi+1 to n do
If x[i] > x[j] then
Endif
Endfor
endfor





#include <iostream>

using namespace std;

int main()

{
     int data[10];
     int i, j, k, tmp, jumlah=0;
     cout<<"PROGRAM PENGURUTAN BILANGAN BUBBLE SORT\n\n";
     cout<<"Masukkan jumlah bilangan : "; cin>>k;
     for(i=0; i<k; i++)
     {
          cout<<"Masukkan Angka ke "<<(i+1)<<" : ";
          cin>>data[i];
          if(data[i]%2==0)
          {jumlah+=data[i];}
     }
     cout<<"\nData sebelum diurutkan : "<<endl;
     for(i=0; i<k; i++)
         {
         cout<<data[i]<<" ";
         }
     cout<<endl;

    for( i=0;i<k;i++)
     {
          for(j=i+1;j<k;j++)
         {
              if(data[i]>data[j])
             {
                 tmp=data[i];
                 data[i]=data[j];
                 data[j]=tmp;
             }
         }
     }
         cout<<"\nData setelah diurutkan  : "<<endl;
     for(i=0; i<k; i++)
     {
      {

         cout<<data[i]<<" ";
          }
     }

     return 0;

}
compile :








refleksi minggu ke 9

hay gaes balik lagi ke refleksi kali ini aku berangkat agak terlambat tapi belum sampe jam 7 dan untung nya dosen pun datang agak lama dari saya, masuk seperti biasa siapain semua bahan kuliah dan rencana kuliah minggu ke 3 jangan lupa, kami di suruh buka diktat bab 8 materi nya sorting tapi ada beberapa teman kami yg belum buka dan malah salah buka ending nya bapak dosen bdmd dan kuliah hari ini pun di ganti malam nya namun tetap di kasi tugas. dan malam nya kita kuliah pun terjadi kesalahan lagi tugas yg kita buat tidak sesuai yg di minta dosen, huft semoga minggu depan lebih baik. good luck guys.

refleksi minggu ke 8

oke gaes! seperti biasa refleksi buat setiap pertemuan dalam satu minggu, kali ini masuk di minggu setelah uts kami membahas seputar soal uts , mengerjakan ulang salah satu dari teman di suruh maju & di beri waktu hanya beberapa menit bahkan detik untuk mengerjakan soal uts kemaren, agar mahasiswa tau jawaban yg benar. setelah itu seperti biasa di berikan tugas untuk posting. sekian :)

refleksi minggu ke 7

minggu ini adalah minggu terahir sebelum dilaksanakan nya uts, jadi membahas seputar uts dan materi nya adalah array. deklarasi array, membaca elemen array , mencetak array dan string.

Deklarasi array ditentukan dengan tipe dari setiap elemen dan banyaknya elemen yang
diperlukan oleh setiap array sehingga komputer mempersiapkan sejumlah memori.
contoh deklarasi, algoritma : array [1..5] of integer, c++  a[45].

itu sedikit tentang array. selanjut nya teman2 bisa belajar di diktat, selamat belajar, sukses uts.

diktat bab 8



No. 1

using namespace std;
int main(int argc, char** argv) {
           int banyakData, cariData, posisi=0;
    bool ketemu = false;

    cout << "Banyak data : ";
    cin >> banyakData;

    int data[banyakData];

    for(int ulang=0; ulang<banyakData; ulang++)
    {
        cout <<"Berikan Data ke["<<ulang<<"] : ";
        cin >> data[ulang];
    }

    cout <<"Data yang akan di cari posisinya: ";
    cin >> cariData;

    for(int ulang=0; ulang<banyakData; ulang++)
    {
        if(cariData == data[ulang])
        {
            posisi = ulang;
            ketemu = true;
            break;
        }
    }


    if(ketemu)
    {
        cout<<"Data "<<cariData<<" ditemukan di posisi : "<<posisi<<endl;
        cout<<"Terimakasih"<<endl;
    }
    else
    {
        cout<<"Data yang anda berikan"<<endl;
        cout<<"Tidak tertera pada data Array"<<endl;
    }
          return 0;
}

output :
 

No. 2
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
          int A[15],i,j,k,tkr,top,bottom,middle,tm;

   for(i=0; i<15; i++)
   {
    printf("Data ke-%d : ", i+1);
      scanf("%d", &A[i]);
   }
   printf("Masukkan data yang akan dicari : ");
   scanf("%d",&k);

   for(i=0; i<15; i++)
   {
     for(j=i+1; j<15; j++)
      {
        if(A[i]>A[j])
         {
           tkr=A[i];
            A[i]=A[j];
            A[j]=tkr;
         }
      }
   }

   tm=0;
   top=9;
   bottom=0;
   while(top>=bottom)
   {
     middle=(top+bottom)/2;
      if(A[middle]==k)
      {
        tm++;
      }
      if(A[middle]<k)
      {
        bottom=middle+1;
      }
      else
      {
        top=middle-1;
      }
   }

   if(tm>0)
   {
     printf("Data %d yang dicari ada dalam array\n",k);
   }
   else if(tm=71)
   {
     printf("Data tidak diketemukan dalam array\n");
   } else
   {
     printf("Data tidak diketemukan dalam array\n");
   }

          return 0;
}
output :

 

No.3
#include <iostream>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

 int main()
{   int a,k,c,d,g;
    k=5;
    int b[5];

    cout<<"Bubble sort adalah salah satu metode sorting atau mengurutkan dari data terkecil ke data terbesar "<<endl<<endl;
    for(a=0;a<k;a++)
    {
        cout<<"Masukkan nilai "<<a+1<<" : ";
                   cin>>b[a];
    }
    for(a=0;a<k-1;a++)
    {

        for(d=a+1;d<k;d++)
        {
        c=a;
            if(b[c]<b[d])
            {
                c=d;
            }
        g=b[c];
        b[c]=b[a];
        b[a]=g;
        }

    }
    cout<<"\n setelah diurutkan akan menjadi : \n";
    for(a=0;a<k;a++)
    {
        cout<<b[a]<<" \n";
    }

   return 0;
}
output : 
 

No.4
#include <iostream>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

 int main()
{
  int data [50];
     int a,b;
     int max,min;

// masukan untuk batas
printf("Banyak Bilangan: ");scanf ("%d",&a);

//pengulangan untuk memasukkan data ke dalam array
for (b=1;b<=a;b++)
{
    printf("\nbilangan ke-%d: ",b);scanf("%d",&data [b]);
}
//mencari nilai terbesar dan terkecil di array dengan looping
          max=data[1];
          min=data[1];
      for (b=1;b<=a;b++)
      {
          if (data[b]>=max)
          {
          max=data[b];
          }
          else if (data[b]<=min)
          {
          min=data[b];
          }
      }
printf("\n\nnilai tertinggi\t:%d", max);
printf("\n\nnilai terkecil\t:%d", min);
getch();

    return 0;
}

 

No.5
#include <iostream>
#include <iomanip>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
template <class T>
void s_sort(T a[],int n)
          {
    int i,j,t;
    for(i=0;i<n;i++){
    for(j=i+1;j<n;j++){
    if(a[j]<a[i])
          {
    t=a[i];
    a[i]=a[j];
    a[j]=t;
    }
    }
    }
}
int main()
{
    int a[100],i,n;
    cout<<"Masukan jumlah elemen : ";
    cin>>n;
    cout<<"Masukan elemen - elemen tersebut :";
    for(i=0;i<n;i++)
    {
          cout<<"\n Enter : ";
    cin>>a[i];
    }
    s_sort(a,n);
    cout<<"Setelah di sorting :";
    for(i=0;i<n;i++)
    {
    cout<<a[i]<<" , ";
    }
   
    return 0;
}
output :
 

No.6
#include <iostream>
#include <conio.h>
using namespace std ;
int data[7] = {0,5,2,4,6,1,3};
int data2[7];
int n;

void tukar(int a, int b)
{
 int t;
 t = data[b];
 data[b] = data[a];
 data[a] = t;
}

void insertion_sort()
{
 int temp,i,j;
 for(i=1;i<=6;i++)
 {
  temp = data[i];
  j = i -1;
  while(data[j]>temp && j>=0)
  {
   data[j+1] = data[j];
   j--;
  }
 data[j+1] = temp;
 }
}
int main()
{
 cout<<"\t\t\t===PROGRAM INSERTION SORT===\n\n"<<endl;

 //Input Data
 for(int i=1;i<=6;i++)
 {
  cout<<"Data ke "<<i<<" : "<<data[i]<<endl;
  data2[i]=data[i];
 }

 insertion_sort();

 cout<<"\n\n";
 //tampilkan data
 cout<<"Data Setelah di Sort : ";
 for(int i=1; i<=6; i++)
 {
  cout<<" "<<data[i];
 }
 cout<<"\n\nSorting Selesai";
 getch();
}
output :
 

No.7
#include <iostream>

using namespace std;
void merge(int low, int mid, int up);
void mergeSort(int low, int up);
int a[8] = {32  , 12 ,  5 ,   18  , 31  , 4   ,  25   , 7 };
int main()
{
int jumlahBil,i;
for(int i=0; i<8;i++)
{
cout<<"Bilangan ke- ["<< i << "] "<<a[i]<<endl;
}
mergeSort(1,8);
for(i=0;i<8;i++)
cout<<a[i]<<"    ";
cout<<endl;
return 0;
}
void merge(int low, int mid, int up)
{
int h, i,j,k;
int b[50];
h = low;
i = low;
j = mid+1;
while((h<=mid)&&(j<=up))
{
if(a[h] < a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=up;k++){
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=up;k++) a[k]=b[k];
}
void mergeSort(int low, int up)
{

int mid;
if(low<up)
{
mid=(low+up)/2;
mergeSort(low,mid);
mergeSort(mid+1,up);
merge(low,mid,up);
}
output :
 

No.8
#include <iostream>

using namespace std;
void merge(int low, int mid, int up);
void mergeSort(int low, int up);
int a[9] = {8 ,  1  , 4  , 9  , 7  , 3  , 5  , 2 , 7 };
int main()
{
int jumlahBil,i;
for(int i=0; i<9;i++)
{
cout<<"Bilangan ke- ["<< i + 1 << "] "<<a[i]<<endl;
}
mergeSort(1,9);
for(i=0;i<9;i++)
cout<<a[i]<<"    ";
cout<<endl;
return 0;
}
void merge(int low, int mid, int up)
{
int h, i,j,k;
int b[50];
h = low;
i = low;
j = mid+1;
while((h<=mid)&&(j<=up))
{
if(a[h] < a[j])
{
b[i]=a[h];
h++;
}
else
{
b[i]=a[j];
j++;
}
i++;
}
if(h>mid)
{
for(k=j;k<=up;k++){
b[i]=a[k];
i++;
}
}
else
{
for(k=h;k<=mid;k++)
{
b[i]=a[k];
i++;
}
}
for(k=low;k<=up;k++) a[k]=b[k];
}
void mergeSort(int low, int up)
{

int mid;
if(low<up)
{
mid=(low+up)/2;
mergeSort(low,mid);
mergeSort(mid+1,up);
merge(low,mid,up);
}
output :



No.9

#include <stdio.h>
#define MAX 10
#define MaxStack 11
int Data[MAX];
// Prosedur menukar data
void Tukar (int *a, int *b)
{
            int temp;
            temp = *a;
            *a = *b;
            *b = temp;
}
// Prosedur pengurutan metode Quick Sort
 void QuickSortNonRekursif()
{
            struct tump {
            int Kiri;
            int Kanan;
            }
            Tumpukan[MaxStack];
            int i, j, L, R, x, ujung = 1; Tumpukan[1].Kiri = 0;
            Tumpukan[1].Kanan = MAX-1;

            while (ujung!=0){
                        L = Tumpukan[ujung].Kiri;
                        R = Tumpukan[ujung].Kanan;
                        ujung--;
                        while(R > L){
                                    i = L;
                                    j = R;
                                    x = Data[(L+R)/2];
                                                while(i <= j){
                                                while(Data[i] < x)
                                                            i++;
                                                            while(x < Data[j])
                                                                        j--;
                                                                        if(i <= j){
                                                                        Tukar(&Data[i], &Data[j]);
                                                                        i++;
                                                                        j--;
                                                }
                        }
                        if(L < i){
                                    ujung++; Tumpukan[ujung].Kiri = i;
                                    Tumpukan[ujung].Kanan = R;
                        }
                        R = j;
            }
}
}
int main()
{
            int i;
            //Memasukkan data yang belum terurut
            printf("DATA SEBELUM TERURUT : \n");
            for(i=1; i<MAX; i++)
            {
                        printf("Data ke %d : ", i);
                        scanf ("%d", &Data[i]);
            }

            QuickSortNonRekursif();
          
            //Data setelah terurut
            printf("\nDATA SETELAH TERURUT");
            for(i=1; i<MAX; i++)
            {
                        printf("\nData ke %d : %d ", i, Data[i]);
            }
            //scanf("%d");
            return(0);
}
output :

 

No.10

#include <stdio.h>
#define MAX 10
#define MaxStack 11
int Data[MAX];
// Prosedur menukar data
void Tukar (int *a, int *b)
{
            int temp;
            temp = *a;
            *a = *b;
            *b = temp;
}
// Prosedur pengurutan metode Quick Sort
 void QuickSortNonRekursif()
{
            struct tump {
            int Kiri;
            int Kanan;
            }
            Tumpukan[MaxStack];
            int i, j, L, R, x, ujung = 1; Tumpukan[1].Kiri = 0;
            Tumpukan[1].Kanan = MAX-1;

            while (ujung!=0){
                        L = Tumpukan[ujung].Kiri;
                        R = Tumpukan[ujung].Kanan;
                        ujung--;
                        while(R > L){
                                    i = L;
                                    j = R;
                                    x = Data[(L+R)/2];
                                                while(i <= j){
                                                while(Data[i] < x)
                                                            i++;
                                                            while(x < Data[j])
                                                                        j--;
                                                                        if(i <= j){
                                                                        Tukar(&Data[i], &Data[j]);
                                                                        i++;
                                                                        j--;
                                                }
                        }
                        if(L < i){
                                    ujung++; Tumpukan[ujung].Kiri = i;
                                    Tumpukan[ujung].Kanan = R;
                        }
                        R = j;
            }
}
}
int main()
{
            int i;
            //Memasukkan data yang belum terurut
            printf("DATA SEBELUM TERURUT : \n");
            for(i=1; i<MAX; i++)
            {
                        printf("Data ke %d : ", i);
                        scanf ("%d", &Data[i]);
            }

            QuickSortNonRekursif();
          
            //Data setelah terurut
            printf("\nDATA SETELAH TERURUT");
            for(i=1; i<MAX; i++)
            {
                        printf("\nData ke %d : %d ", i, Data[i]);
            }
            //scanf("%d");
            return(0);
}

output :