Sabtu, 16 April 2016

minggu 7 diktat bab 6 workshop 1

  • permasalahan
    Buatlah algoritma dan subprogram untuk menyisipkan
    Misalkan : kata1 = “Algoritma Pemrograman”
    kata2 = “dan “
    Outputnya :
    kata3 = “Algoritma dan Pemrograman”
  • analiasis
    • potong kata1 sebelum spasi
    • menambahkan kata2
    • menambahkan kata1 setelah spasi
  • c++
    #include <iostream>
    #include <string.h>
    #define delete(str,posisi,panjang) strcpy(str+posisi-1,str+posisi+panjang-1)
    using namespace std;
    int sp(char c[]){
        int i=0;
        for(int j=0; j<strlen(c);j++){
            if(c[j]==' ') break;
           
            i++;
        }
        return i;
    }
    void ctk(char a[],char b[]){
        char c[strlen(a)+strlen(b)]={};
        //cout<<c<<endl;
        strncat(c,a,sp(a));
        strcat(c," ");
        strncat(c,b,sp(b));
        delete(a,0,sp(a));
        strncat(c,a,strlen(a));
        cout<<c;
       
    }

    int main(int argc, char** argv) {
        char a[30]={"algoritma program"};
        char b[20]={"dan"};
        //char c[pa(a)+pa(b)];
        cout<<"kata 1: "<<a<<endl;
        cout<<"kata 2: "<<b<<endl<<"jadi : ";
        ctk(a,b);
        return 0;
    }
  • program

refleksi alpro minggu 7

kuliah algoritma pemrograman di minggu ke 7 ini kita mempelajari array satu dimensi. nah buat apa sih array itu? array itu untuk menampung banyak data dengan tipe data yang sama, coba kalau kita mau menamung 10 data kita harus mendeklarasikan variabel satu-satu misal a,b,c,d,e,dst la kan numpuk banyak benget, dengan array kita tinggal buat satu bisa muat banyak misal a[10] nah buat satu ini bisa muat 10 data berbeda atau sama di setiap indek 1, 2,3,sampai 10.

Aku sih belum tau apa yang belum aku ketahui dari array ini. maka aku haris mengexplore lagi masalah masalah ya mungkin aku belum temukan sekarang.

sekian dulu ya, bye.

buku 2 bab 4 4.7 mencari elemen terkecil

  • permasalahan
    mencari elemen terkecil dari deretan array
  • analisis
    • masukkan posisi pertama sebagai variabel elemen terkecil
    • melakukkan perulangan mulai setalah posisi awal
    • disetiap perulangan lakukan pengecekan apakah lebih kecil dari variabel elemen terkecil jiga iya masukkan data di array ke variabel elemen terkecil
  • flowchart raptor
    fungsi fre

    fungsi main
  • cpp
    #include <iostream>
    void freku(const int data[],int n,int &sp){
        int max=0; int byk;
        for(int i=0;i<n;i++){
            byk=0;
            for(int j=0;j<n;j++){
                if(data[i]==data[j]) byk++;
            }
            if(byk>max) {sp= data[i]; max=byk;}
           
        }
    }
    int main(int argc, char** argv) {
        int data[]={2,5,3,6,2,5,7,8,5,3,4,8,1,9,4,7,2,0,4,2,5,4,2,8,3,6,3,4,1,8,9,3,5,1,2,4,6};
        int n = sizeof data/sizeof(int);
        int sp;
       
        freku(data,n,sp);
        std::cout<<sp;
        return 0;
    }

minggu 7 diktat bab 6 workshop 2

  • permasalahan
    Buat program untuk mengubah string menjadi bergantian huruf besar
    dan kecil. Contoh :
    Algoritma dan Pemrograman AlGoRiTmA dAn PeMrOgRaMaN
  • analisis
    • melakukan perulangan dari indek awal sampai akhir
    • jika indek dimulai dari 1 disetiap indek ganjil dijadikan huruf kapital dan genap huruf kecil
  • flowchart raptor
    fungsi p
    fungsi cetak

    fungsi main
  • source c++
    #include <iostream>
    #include <string.h>
    using namespace std;
    char p(char a,int p){
        if(a<='z'&&a>='a'){
            if(p==0) a=a-32;
        }
        if(a<='A'&&a>='Z')
            if(p==1) a=a+32;
        return a;
    }
    void cetak(char s[]){
        //char t[strlen(s)];
        int sm=0;
        for(int i=0;i<30;i++){
            if(s[i]==' ') {
            sm++; }
           
            cout<<p(s[i],(i-sm)%2);
        }
    }

    int main(int argc, char** argv) {
        char s[30]={"algoritma dan pemrograman"};
        cetak(s);
        return 0;
    }

Jumat, 15 April 2016

minggu 7 diktat bab 6 workshop 3

  • permasalahan
    Buat algoritma dan program untuk menghitung jumlah kata dalam suatu kalimat.
    contoh: "satu dua tiga empat lima enam tujuh delapan sembilan" terdapat 9 kata.
  • analisis
    • melakukan perulangan dari indek pertama sampai terakhir
    • menambahkan satu kata apabila setelah space menemukan huruf
  • flowchart raptor
    fungsi ck
    fungsi main
  • source c++
    #include <iostream>
    #include <string.h>
    using namespace std;
    int ck(char k[]){
        //int s=0;
        int sp=1, kt=0;
        for(int i=0;i<strlen(k);i++){
            if(k[i]!=' '&&sp==1)  {
                kt++; sp=0;
            }
            if(k[i]==' '&&sp==0){
                sp=1;
            }
        }
        return kt;
    }
    int main(int argc, char** argv) {
        char kata[100]={"satu dua tiga empat lima enam tujuh delapan sembilan "};
        cout<<ck(kata);
        return 0;
    }

Kamis, 14 April 2016

ppt minggu 7 soal 6.6 polindrom

  • permasalahan

ppt minggu 7 soal 6.5 mencari modus

  • permasalahan
    Tentukan modus dari n buah data berupa bilangan bulat
  • annalisis
    • menghitung frekuensi untuk element yang sama
    • menentukan frekuensi kemunculan yang terbesar
  • flowchart raptor
    fungsi main

    fungsi frekuensi&modus
  • c++
    #include <iostream>

    void freku(const int data[],int n,int &sp){
        int max=0; int byk;
        for(int i=0;i<n;i++){
            byk=0;
            for(int j=0;j<n;j++){
                if(data[i]==data[j]) byk++;
            }
            if(byk>max) {sp= data[i]; max=byk;}
           
        }
    }
    int main(int argc, char** argv) {
        int data[]={2,5,3,6,2,5,7,8,5,3,4,8,1,9,4,7,2,0,4,2,5,4,2,8,3,6,3,4,1,8,9,3,5,1,2,4,6};
        int n = sizeof data/sizeof(int);
        int sp;
       
        freku(data,n,sp);
        std::cout<<sp;
        return 0;
    }

Jumat, 08 April 2016

refleksi alpro minggu 6

di minggu ke enam alpro mempelajari rekursif yaitu bagaimana mengaplikasikan perulangan dengan menggunakan fungsi yang didalamnya memanggil funsinya sendiri yang telah diberikan penyetop. yang belum saya pelajari di minggu ini:
  • melogikakan bentuk rekursif apalagi yang bertingkat tingkat
untuk mempelajarinya maka saya harus mencoba-coba dan juga mencari contoh atau referensi lain.

refleksi minggu ke 5

di minggu kelima ini yang saya pelajari adalah mengenai seb program. sub program berfungsi untuk membuat program lebih tersetruktur.
yang belum saya pelajari di minggu ini adalah:
  • apa macam macam bentuk sub program yang bisa dibuat
untuk mempalajari yang belum paham di atas maka saya harus mencari referensi tambahan

tugas alpro diktat bab 1

hasil dari pemgerjaan latihan di (DIKTAT ALGORITMA DAN PEMROGRAMAN Edisi II) seperti sebagai berikut:
untuk mempermudah pengupload maka dikumpulkan di file hosting google drive.
HASIL LINK: 
LINK BAB 1

5.3 perpangkatan

  • Dengan menggunakan fungsi ln dan exp, buatlah fungsi untuk menghasilkan nilai x^y
  • analisis
    Dengan menggunakan sifat logaritma :
    ln(xy) = y*ln(x)
    exp(ln(xy)) = exp(y*ln(x))
    xy = exp(y*ln(x))
  • cpp
    #include <iostream>
    #include <math.h>
    using namespace std;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    float pangkat(int x,int y){
        return(exp(y*log(x)));
    }

    int main(int argc, char** argv) {
        float hasil;
        int a,b;
        cout<<"menghitung hasil perpangkatan\n";
        cout<<"Tulis sebuah bilangan :";cin>>a;
        cout<<"Mau dipangkat berapa :";cin>>b;
        cout<<a<<"^"<<b<<"="<<pangkat(a,b);
       
        return 0;
    }

5.4 perkalian 2 bilaangan

  • fungsi perkalian 2 bilangan bulat dengan menggunakan operator penjumlahan.
  • cpp
    #include <iostream>
    using namespace std;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    int kal(int k,int b){
        if(b>0)
        return k+kal(k,b-1);
        else return 0;
    }
    int main(int argc, char** argv) {
        int k,b;
        cin>>k;cout<<"dikalikan ";cin>>b;
        cout<<kal(k,b);
        return 0;
    }

5.5 factorial

  • menghitung factorial rekursif
  • cpp
    #include <iostream>
    using namespace std;

    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    int fac(int n){
        if(n>1) return fac(n-1)*n;
        else return 1;
    }
    int main(int argc, char** argv) {
        int a;cout<<"factorial : ";cin>>a;
        cout<<fac(a);
        return 0;
    }

5.6 fibonanci

  • menghitung fibonanci sampai  suku ke n
  • cpp
    #include <iostream>
    #include <conio.h>
    using namespace std;
    class Operator {
        friend ostream& operator<<(ostream&, Operator&);
        friend istream& operator>>(istream&, Operator&);
        public:
            long fibonacci(int);
        private:
            int n;
        };
    int fibonacci (int n){
        if ((n == 1) || (n == 2)) return(1);
        else return(fibonacci(n-1) + fibonacci(n-2));
    }
    ostream& operator<<(ostream& out, Operator& a) {
        for (int i = 1; i <= a.n; i++)
            out << fibonacci(i) << " ";
        return out;
        }
    istream& operator>>(istream& in, Operator& a) {
        cout << "Sampai suku ke : ";
        in >> a.n;
        return in;
    }
    main() {
        Operator run;
        cin >> run;
        cout << run;
        getch();
    }

5.8 mencari gcd

  •  menghitung gcd dari dua bilangan bulat positif
  • cpp
    #include <iostream>
    using namespace std;
    /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    int gcd(int c,int d){
        if(d==0) return(c);
        if(c<d) return(gcd(d,c));
        return(gcd(c-d,d));
    }
    int main(int argc, char** argv) {
        int a,b;
        cin>>a;cin>>b;
        cout<<gcd(a,b);
        return 0;
    }

ppt 5 penambahan berpangkat rekursif


  •     Hitung nilai dari
    52 + 62 + 72 + 82 + 92 + 102
  •  cpp
    #include <iostream>
    using namespace std;
    int re(int n){
        if(n>=5){
            return re(n-1)+n*n;
        }
        else return 0;
    }

    int main(int argc, char** argv) {
        cout<<re(10);
        return 0;
    }