animasi bergerak gif
My Widget
Hai MBLO!

Selasa, 07 Juni 2016

Tugas Kelompok Minggu 13

Menghitung IPK

1. Algoritma




2. Struct

  struct{
char makul[10];
float SKS;
float nilai_akhir;
float scor;
float NAS;
}nilai[10];
struct{
float SKS;
float NAS;
float IP;
}mhs;

3. Program C++

#include <iostream> 
#include <string.h> 
#include <windows.h> 
 
using namespace std; 
  struct{
char makul[10];
float SKS;
float nilai_akhir;
float scor;
float NAS;
}nilai[10];
struct{
float SKS;
float NAS;
float IP;
}mhs;
main() 

    int makul, bykSks=0;
    float nil=0.00, n_Total;
    cout << "Jumlah Mata Kuliah : "; 
    cin >> makul; 
     
    string nilai[makul];
    int sks[makul]; 
     
    for(int h=0; h<makul; h++) 
    { 
        cin.ignore();
        cout <<h+1<< ". Nilai Huruf : "; 
        cin >> nilai[h]; 
        cout<<"\t Banyak SKS : "; 
        cin >> sks[h]; 
        bykSks += sks[h];    
    } 
    cout<<"\n"<<endl; 
    for(int h=0; h<makul; h++) 
    { 
        cout<<h+1<<". "<<nilai[h]<<" \t"<<sks[h]<<" SKS"<<endl; 
    } 
    cout<<endl; 
    for(int h=0; h<makul; h++) 
    { 
        if(nilai[h] == "A" || nilai[h] == "a") 
            nil += (4*sks[h]); 
        else if(nilai[h] == "B+" || nilai[h] == "b+") 
            nil += (3.5*sks[h]); 
        else if(nilai[h] == "B" || nilai[h] == "b") 
            nil += (3*sks[h]); 
        else if(nilai[h] == "C+" || nilai[h] == "c+") 
            nil += (2.5*sks[h]); 
        else if(nilai[h] == "C" || nilai[h] == "c") 
            nil += (2*sks[h]); 
        else if(nilai[h] == "D" || nilai[h] == "d") 
            nil += (1*sks[h]); 
        else 
            nil += 0; 
    } 
    n_Total = nil/bykSks; 
    cout << "IPK Semester ini : " << n_Total <<endl; 
    system("pause"); 
}

Jumat, 03 Juni 2016

ALPRO Pertemuan 11

Pagi ini yang kami bahas yaitu mngenai array 2 dimensi.
Dosen menjelaskan tahap demi tahap bagaimana array 2 dimensi dapat di lakukan sebelum membuat program , mahasiswa di anjurkan untuk selalu mengikuti apa yang beliau perintahkan dan contohkan.
Kemudian kami mendapat tugas untuk membuat perkalian matrik dengan vektor 2x3 dengan metode 6 langkah

ALPRO Pertemuan ke 10

Pada pertemuan ke-10 masih membahahas mengenai macam-macam sorting dan algoritma penyelesaiannya. Dan tambahannya yaitu membahas mengenai searching. Sorting dan searching adalah sesuatu yang berkaitan, dimana sorting di gunakan untuk mengurutkan data sedangkan searching di gunakan untuk mencari data. Jadi jika data yang ada sudah urut itu akan mempermudah dan menghemat waktu dalam pencarian data.

BAB X

Pointer, Pengenalan Struktur Data.

 Inilah Program & Outputnya :


#include <iostream>
#include <conio.h>
#include <windows.h>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;
class Mhs{
    public:
        void Buat_berikut_list();
        char Nama[20];
        char Nim[10];
        int Nilai;
       
        Mhs *berikut;
};
void Mhs::Buat_berikut_list(){
    Mhs *Ptr_Kepala = NULL;
    Mhs *Ptr_Baru;
    char lagi;
    do{
        Ptr_Baru= new Mhs;
        cout<<"\t\t\tREKAP NILAI MAHASISWA "<<endl<<endl;
        cout<<"Nama Mahasiswa   : ";
        cin>>Ptr_Baru->Nama;
        cout<<"Nim Mahasiswa    : ";
        cin>>Ptr_Baru->Nim;
        cout<<"Nilai Mahasiswa  : ";
        cin>>Ptr_Baru->Nilai;
        Ptr_Baru->berikut=Ptr_Kepala;
        Ptr_Kepala=Ptr_Baru;
       
        cout<<endl;
        cout<<"Tambah (Y/T) : ";
        cin>>lagi;
       
    } while (lagi=='Y' || lagi=='y');
    system("cls");
    cout<<"\nAnda telah memasukkan data : "<<endl<<endl;
    Mhs *cetak= Ptr_Kepala;
    cout<<"Nama \t\t Nim \t\tNilai Angka \t\tNilai Huruf"<<endl;
    while (cetak !=NULL){
        cout<<cetak->Nama<<" \t\t"<<cetak->Nim<<" \t\t"<<cetak->Nilai<<" \t\t";
       
        if (cetak->Nilai>=0&&cetak->Nilai<20)
        cout<<"E"<<endl;
        else if(cetak->Nilai>=20&&cetak->Nilai<40)
        cout<<"D"<<endl;
        else if(cetak->Nilai>=40&&cetak->Nilai<60)
        cout<<"C"<<endl;
        else if(cetak->Nilai>=60&&cetak->Nilai<80)
        cout<<"B"<<endl;
        else
        cout<<"A"<<endl;
        cetak=cetak->berikut;
    }
}
int main(int argc, char** argv) {
    Mhs *simpul;
    simpul->Buat_berikut_list();
    getch();
}




Selasa, 24 Mei 2016

Perkalian Matrik dengan Vektor



1. Identifikasi Masalah 
    Cara Mengalikan matrik 3x2 dengan vektor.

2. Menentukan input dan output
    input : Matrik = | 2 1 4 |
                              | 1 4 2 |
                Vektor = | 1 |
                               | 2 |
                               | 4 |
    output : hasil = | 20 |
                             | 17 |  

3.   Algoritma
      Procedur kali matrik (input/output i,j,matrik vektor
      Deskripsi :
       for i<- 1 to 2 do
           for j<- 1 to 3 do
              ([i,j]=(i,j)+a[i,j]*b[i,j])
                 end for
              end for
           end for


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

void kali(int matrik[2][3],int vektor[3],int hasil[2]){
 cout<<"matrik : \n";
 for(int i=0;i<2;i++){
  for(int j=0;j<3;j++)
   hasil[i]=hasil[i]+(matrik[i][j]*vektor[j]);
 }
}
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[]){
 cout<<"vektor : \n";
 for(int i=0;i<3;i++){
  cout<<vektor[i]<<endl;
 }
}

void cetak(int hasil[]){
 cout<<"hasil trakhir : \n";
 for(int i=0;i<2;i++){
  cout<<hasil[i]<<endl;
 }
}
int main(int argc, char** argv) {
 int matrik[2][3]={2,1,4,1,4,2}, vektor[3]={1,2,4},hasil[2]={0};
 kali(matrik,vektor,hasil);
 cetakm(matrik);
 cetakv(vektor);
 cetak(hasil);
 return 0;


5. Output




 6. Uji coba dengan data
      Matrik 
         A = | 2 1 4 |
                | 1 4 2 |
      Vektor 
           B = | 1 |
                  | 2 |
                  | 4 |
Perkalian
C = |A11.B11+A12.B21+A13.B13|
       |A21.B11+A22.B21+A23.B31|
   = | 1x1 + 3x2 + 3x3 |
       | 2x1 + 3x2 + 4x3 |
Hasil  
       | 20 |
       | 17 |




Jumat, 13 Mei 2016

Sorting (Bubble Sort)

 Diberi nama "Bubble" karena proses pengurutan secara berangsur-angsur bergera/berpindah ke posisi yang tepat, bila akan di urutkan nilai yang besar yang akan naik sementara nilai yang kecil turun. Setiap data (misalnya data pertama) akan di bandingkan dengan data yang ada di sebelahnya (dari data kedua sampai selesai).



Algoritma :


Procedure Bubble_Sort (input/output x : larik, input n : byte)

Deklarasi : 

       larik = array [1..100] of integer
       i, a : byte
       k : larik
       j, bantu : integer

Deskripsi : 

       for i <-- 1 to n-1 do

          for j <-- i+1 to n do

             if x[i] > x[j] then

                tukar(x[i], x[j])

             endif

          endfor
   endfor
Flowchat menggunakan aplkasi Raptor :  



Outputnya : 

  
 Program menggunakan Dev C++ :

#include <iostream>
#include <cstdlib>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;

void baca_data(int A[], int n) { 
int i;
for (i = 0; i < n; i++){
cout<<"Data ke-" <<i+1<< " : ";
cin>>A[i];
}
}

void cetak_data(const int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout<<A[i]<< " ";
cout<<"\n";
}

void tukar (int *a, int *b){
int temp;
temp = *a;
*a = *b;
*b = temp;
}

void buble_sort (int x[], int n){
int i, j;
for (i = 0; i<n-1; i++)
for (j = i+1; j<n; j++)
if (x[i] > x[j]) tukar(&x[i], &x[j]);
}

int main(int argc, char** argv) {
int data[10], n;
cout<<"Banyak data : ";
cin>>n;
baca_data(data,n);
cetak_data(data,n);
buble_sort(data,n);
cetak_data(data,n);

return 0;
}

Outputnya :


Pada materi Insertion Sort bisa dilihat di blog teman kelompok saya pada Link Delav
Pada materi Selection Sort bisa dilihat di blog teman kelompok saya pada

Kasus 8.2 : Pencarian Biner (Binary Search)

Algoritma :

function pencarianBiner(input aray : larik; kunci, low, high : integer) : integer


Deklarasi
       ketemu : boolean
       i, middle : integer
Deskripsi
       ketemu <-- false
       while (low <= high) and (not ketemu) do
           middle <-- (low+high) div 2
           if (kunci = aray[middle]) then ketemu <-- true { data pencarian = data di tengah }
           else if (kunci < aray[middle]) then high <-- middle – 1 {data akan dicari lagi di sebelah kiri}
           else low <-- middle + 1 {data akan dicari lagi di sebelah kanan}
           endif
       endwhile
       if ketemu then pencarianBiner := middle
       else pencarianBiner := -1;
      endif
 

Dan yang ini Gambar Program C++ yang Menggunakan Aplikasi Dev C++ :

#include <iostream>
#define UKURAN 15

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

using namespace std;

void cetakHeader(void){
     int i;
     cout<<"\nSubscript : \n";
     for (i=0;i<=UKURAN-1;i++) cout<<i<<" ";
     cout<<"\n";
     for (i=1; i <= 4*UKURAN; i++) cout<<"-";
     cout<<"\n";
     }
void cetakBaris(int b[], int low, int mid, int high){
     int i;
     for (i=0; i<=UKURAN-1; i++)
     if (i<low || i>high) cout<< " ";
     else if (i==mid) cout<< "*" <<b[i];
     else cout<<b[i] << " ";
     cout<<"\n";
     }
int pencarianBiner(int b[], int kunciPencarian, int low, int high){
    int i, middle;
    while (low <= high) {
    middle = (low+high) / 2;
    cetakBaris(b, low, middle, high);
    if (kunciPencarian == b[middle])
    return middle;
    else if (kunciPencarian < b[middle])
    high = middle - 1;
    else low = middle + 1;
    }
    return -1;
}

int main(int argc, char** argv) {
    int a[UKURAN], i, kunci, hasil;
    for (i=0; i<=UKURAN-1; i++) a[i] = 2*i;
    cout<<"Masukkan bilangan antara 0-28 : ";
    cin>>kunci;
    cetakHeader();
    hasil=pencarianBiner(a,kunci,0,UKURAN-1);
    if (hasil != -1) cout<<kunci<<" ditemukan pada posisi : "<< hasil;
    else
    cout<<kunci<<" tidak ditemukan";
  
  return 0;
}