├── .vscode └── settings.json ├── LICENSE ├── Project & Example ├── Project Segitiga.cpp ├── ProjectFaktorial.cpp ├── ProjectKalkulator.cpp ├── ProjectLingkaran.cpp ├── ProjectNestedLoop.cpp ├── ProjectNilaiMinimum&Maximum.cpp ├── ProjectParkir.cpp ├── ProjectPerumahan.cpp └── Responsi3.cpp ├── README.md ├── Tutorial ├── 1.Hello World.cpp ├── 10.Switch.cpp ├── 11.BasicClass.cpp ├── 2.AssignVariabel.cpp ├── 3.Variabel.cpp ├── 4.Operator.cpp ├── 5.AssignOperator.cpp ├── 6.Percabangan.cpp ├── 7.Comparator.cpp ├── 8.InputOperator.cpp └── 9.Looping.cpp └── Tutorial2 ├── 1.ArrayIndex.cpp ├── 10.Metode_Search_1.cpp ├── 11.Metode_Search_2.cpp ├── 12.Menghitung_Kalimat.cpp ├── 13.MinMax_Pointer.cpp ├── 14.MemoriDinamis.cpp ├── 15.MemoriDinamis2.cpp ├── 16.SearchDalamArray.cpp ├── 17.BinarySearchString.cpp ├── 18.SortFinal.cpp ├── 19.Struct.cpp ├── 2.InputArrayIndex.cpp ├── 20.IOStruct.cpp ├── 21.queue.cpp ├── 22.stack.cpp ├── 23.LinkedList.cpp ├── 3.Multidimensional_array.cpp ├── 4.Pointer.cpp ├── 5.Dereferensi_Pointer.cpp ├── 6.Replace_Pointer.cpp ├── 7.Fungsi.cpp ├── 8.Cek_Length_Dengan_Pointer.cpp └── 9.Looping_Dengan_Array.cpp /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "files.associations": { 3 | "iostream": "cpp", 4 | "*.tcc": "cpp", 5 | "istream": "cpp", 6 | "ostream": "cpp" 7 | } 8 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Muhammad Rafly Indrawan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Project & Example/Project Segitiga.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main () { 4 | //kita deklarasi beberapa variabel disini 5 | int tinggi,kolom,baris,itung; 6 | //kita output tulisan masukkan tinggi 7 | cout<<"masukkan tinggi"; 8 | //masukkan inputan ke variabel 9 | cin>>tinggi; 10 | //untuk membuat bintangnya 2 kali lipat namun -1 agar mempunyai puncak 11 | itung=(tinggi*2)-1; 12 | //loop untuk buat tinggi nya 13 | for (baris=1;baris<=tinggi;baris++){ 14 | //kolom spasi diawali dengan loop baris namun +1 agar spasinya berakhir di 0, bukan 1 15 | for (kolom=baris+1;kolom<=tinggi;kolom++){ 16 | cout<< " "; 17 | } 18 | //kolom bintang, loop awal dari 1; hanya saja ujungnya yaitu sepanjang loop si baris dikali 2 dikurang 1; biar ada puncak segitiganya 19 | for(kolom=1;kolom<=(2*baris)-1;kolom++){ 20 | cout<< "*"; 21 | } 22 | //garis baru setelah loop si baris selese 23 | cout< 2 | using namespace std; 3 | int main(){ 4 | int x; 5 | cout<<"Masukkan Nilai Faktorial = "; 6 | cin>>x; 7 | for(int y=x-1;y>=1;y--){ 8 | cout< 2 | using namespace std; 3 | 4 | int main() //fungsi ini wajib ada karena merupakan bagian penting dari c++ 5 | { 6 | int opsi, angka1, angka2, hasil; 7 | /* 8 | Deklarasi variabel 9 | variabel opsi akan berisi operasi (tambah, kurang, kali, bagi, modulus) yang dipilih user 10 | variabel angka1 akan berisi angka pertama yang di input oleh user 11 | variabel angka2 akan berisi angka kedua yang di input oleh user 12 | variabel hasil akan berisi hasil operasi dari dua angka yang telah diinput user 13 | */ 14 | cout << "1. Penjumlahan \n2. Pengurangan \n3. Perkalian \n4. Pembagian \n5. Modulus \nPilih opsi : "; 15 | cin >> opsi; //kita input operasi disini sesuai dengan list yang kita tulis 16 | //user hanya perlu input angkanya saja 17 | 18 | if (opsi == 1) 19 | //kita membuat argumen if yaitu jika if sama dengan 1 maka operasi penjumlahan yang akan dijalankan 20 | { 21 | cout << "Masukkan angka" << endl; 22 | cout << "Angka pertama > "; 23 | cin >> angka1; //input angka1 24 | cout << "Angka kedua > "; 25 | cin >> angka2; //input angka2 26 | 27 | hasil = angka1 + angka2; //operasi penjumlahan 28 | cout << "Hasil dari " << angka1 << " + " << angka2 << " adalah " << hasil << endl; 29 | //hasil dari penjumlahan 30 | } 31 | 32 | else if (opsi == 2) 33 | //jika user memasukkan opsi sama dengan 2 maka operasi pengurangan yang akan dijalankan 34 | { 35 | cout << "Masukkan angka" << endl; 36 | cout << "Angka pertama > "; 37 | cin >> angka1; //input angka1 38 | cout << "Angka kedua > "; 39 | cin >> angka2; //input angka2 40 | 41 | hasil = angka1 - angka2; //operasi pengurangan 42 | cout << "Hasil dari " << angka1 << " - " << angka2 << " adalah " << hasil << endl; 43 | //hasil dari pengurangan 44 | } 45 | 46 | else if (opsi == 3) 47 | //jika user memasukkan opsi sama dengan 3 maka operasi perkalian yang akan dijalankan 48 | { 49 | cout << "Masukkan angka" << endl; 50 | cout << "Angka pertama > "; 51 | cin >> angka1;//input angka1 52 | cout << "Angka kedua > "; 53 | cin >> angka2;//input angka2 54 | 55 | hasil = angka1 * angka2;//operasi perkalian menggunakan tanda "*" bukan tanda "x" 56 | cout << "Hasil dari " << angka1 << " x " << angka2 << " adalah " << hasil << endl; 57 | //hasil dari operasi perkalian 58 | } 59 | 60 | else if (opsi == 4) 61 | //jika user memasukkan opsi sama dengan 4 maka operasi pembagian akan dijalankan 62 | { 63 | cout << "Masukkan angka" << endl; 64 | cout << "Angka pertama > "; 65 | cin >> angka1;//input angka1 66 | cout << "Angka kedua > "; 67 | cin >> angka2;//input angka2 68 | 69 | hasil = angka1 / angka2;//operasi pembagian menggunakan tanda "/" bukan tanda ":" 70 | cout << "Hasil dari " << angka1 << " / " << angka2 << " adalah " << hasil << endl; 71 | //hasil dari operasi pembagian 72 | } 73 | 74 | else if (opsi == 5) 75 | //jika user memasukkan opsi sama dengan 5 maka operasi modulus akan dijalankan 76 | //modulus adalah hasil sisa bagi 77 | { 78 | cout << "Masukkan angka" << endl; 79 | cout << "Angka pertama > "; 80 | cin >> angka1;//input angka1 81 | cout << "Angka kedua > "; 82 | cin >> angka2;//input angka2 83 | 84 | hasil = angka1 % angka2;//operasi modulus menggunakan tanda "%" 85 | cout << "Hasil dari " << angka1 << " % " << angka2 << " adalah " << hasil << endl; 86 | //hasil dari operasi modulus 87 | } 88 | 89 | else 90 | //kode ini akan berjalan jika user memasukkan angka selain angka 1 sampai 5 91 | //misalnya kita input angka 6 maka outputnya adalah "Masukkan opsi dengan benar!" 92 | { 93 | cout << "Masukkan opsi dengan benar!" << endl; 94 | } 95 | 96 | return 0; 97 | } -------------------------------------------------------------------------------- /Project & Example/ProjectLingkaran.cpp: -------------------------------------------------------------------------------- 1 | 2 | // Membuat lingkaran 3 | #include 4 | using namespace std; 5 | 6 | // Fungsi membuat lingkaran 7 | void printPattern(int radius) { 8 | 9 | // Nilai tengah dari lingkaran 10 | float dist; 11 | 12 | // Arah Horizontal 13 | for (int i = 0; i <= 2 * radius; i++) { 14 | 15 | // Arah Vertikal 16 | for (int j = 0; j <= 2 * radius; j++) { 17 | dist = sqrt((i - radius) * (i - radius) + 18 | (j - radius) * (j - radius)); 19 | 20 | // Jarak dari tiap radius dan print bintang 21 | if (dist > radius - 0.5 && dist < radius + 0.5) 22 | cout << "*"; 23 | else 24 | cout << " "; 25 | } 26 | 27 | cout << "\n"; 28 | } 29 | } 30 | 31 | // Definisi radius/diameter lingkaran 32 | int main() { 33 | int radius = 6; 34 | printPattern(radius); 35 | return 0; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /Project & Example/ProjectNestedLoop.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | int tinggi; 7 | cout<<"masukkan banyaknya bintang"; 8 | cin>>tinggi; 9 | cout<<"------------------------------------"< 2 | using namespace std; 3 | int main (){ 4 | //bikin variabelnya dulu 5 | int min,loop,bilangan,max; 6 | cout<<"mau Berapa Looping? = "; 7 | //masukin variabelnya 8 | cin>>loop; 9 | //loop untuk mau nanya berapa kali 10 | for (int x=1;x<=loop;x++){ 11 | cout<<"masukkan Bilangan ke-"<>bilangan; 14 | //ketika mulai, si x lgsg diisi ama nilai yang diinput pertama oleh si user 15 | if (x==1){ 16 | //pengisian variabel isi dengan inputan pertama 17 | min=bilangan; 18 | max=bilangan; 19 | } 20 | //kalo si user input, di cek, apakah lebih kecil/besar 21 | //kalo lebih kecil, dia bakal ditempatin di variabel min 22 | else if (bilanganmax){ 27 | max=bilangan; 28 | } 29 | } 30 | //kita output hasilnya diluar for, karna kalau di for, setiap perubahan di variabel min/max lgsg ke output juga 31 | cout<< "hasil Terkecil Adalah = "< 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | using namespace std; 8 | bool Cek_Nomor(const string& s) 9 | { 10 | string::const_iterator it = s.begin(); 11 | while (it != s.end() && isdigit(*it)) ++it; 12 | return !s.empty() && it == s.end(); 13 | } 14 | int cicilann(int cicilan, float angsurann){ 15 | return angsurann/cicilan; 16 | } 17 | int bungaa(int cicilan,float angsurann, float bunga){ 18 | return angsurann*bunga/cicilan; 19 | } 20 | 21 | void pilihwarna(int nilai){ 22 | SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), nilai); 23 | } 24 | 25 | void delay(int delay) 26 | { 27 | int now=time(NULL); 28 | int later=now+delay; 29 | while(now<=later)now=time(NULL); 30 | } 31 | int main(){ 32 | //############################################################################################################################## 33 | //############################################################################################################################## 34 | //############################################################################################################################## 35 | system("color 87"); 36 | pilihwarna(112); 37 | login: 38 | cout<<"#######################################################################################################################\n"; 39 | cout<<" Silahkan Login !\n"; 40 | cout<<"#######################################################################################################################\n"; 41 | pilihwarna(135); 42 | cout<<"Masukkan Nama ="; 43 | string id; 44 | cin>>id; 45 | if(id=="rafli"||id=="Rafli"){ 46 | cout<<"Masukkan Password ="; 47 | int totalbener=0; 48 | char isi[11]; 49 | char pass[15]="password123"; 50 | for(int x = 0;x<11;x++){ 51 | isi[x]=getch(); 52 | cout<<"*"; 53 | } 54 | for (int y=0;y<11;y++){ 55 | if(isi[y]==pass[y]){ 56 | totalbener = totalbener + 1; 57 | } 58 | } 59 | 60 | if(totalbener == 11){ 61 | goto awalan; 62 | } 63 | else { 64 | 65 | system("cls"); 66 | pilihwarna(132); 67 | cout<<"ID Tidak Ditemukan Atau Password Salah !\n"; 68 | pilihwarna(135); 69 | goto login; 70 | } 71 | } 72 | else{ 73 | system("cls"); 74 | pilihwarna(132); 75 | cout<<"ID Tidak Ditemukan Atau Password Salah !\n"; 76 | pilihwarna(135); 77 | goto login; 78 | } 79 | awalan: 80 | system("cls"); 81 | int no_blok; 82 | char pembeli[50]; 83 | char alamat[200]; 84 | string blok,no; 85 | //############################################################################################################################## 86 | //############################################################################################################################## 87 | //############################################################################################################################## 88 | awal: 89 | pilihwarna(112); 90 | cout<<"|=====================================================================================================================|"<>no; 116 | int panjang= no.size(); 117 | if(Cek_Nomor(no)){ 118 | while(panjang <= 6 || panjang >= 13){ 119 | system("cls"); 120 | pilihwarna(132); 121 | cout<<"Nomor Yang Anda Masukkan Salah !\n"; 122 | pilihwarna(135); 123 | goto no; 124 | } 125 | goto satu; 126 | } 127 | else{ 128 | system("cls"); 129 | pilihwarna(132); 130 | cout<<"Nomor Hanya Bisa diisi Oleh Angka !\n"; 131 | pilihwarna(135); 132 | goto no; 133 | } 134 | //############################################################################################################################## 135 | //############################################################################################################################## 136 | //############################################################################################################################## 137 | 138 | cout<> no_blok; 182 | } 183 | dua: 184 | pilihwarna(112); 185 | cout<<"|=====================================================================================================================|"<> tipe; 224 | } 225 | tiga: 226 | cout<> hargamodel; 260 | } 261 | empat: 262 | pilihwarna(112); 263 | cout<<"|=====================================================================================================================|"<> keramik; 302 | } 303 | lima: 304 | pilihwarna(112); 305 | cout<<"|=====================================================================================================================|"<> kamar; 351 | } 352 | enam: 353 | pilihwarna(112); 354 | cout<<"|=====================================================================================================================|"<> fasi; 400 | } 401 | //############################################################################################################################## 402 | //############################################################################################################################## 403 | //############################################################################################################################## 404 | dp: 405 | int total=(hargatnh+hargamodel+keramik+kamar+fasi); 406 | cout<<"Harga Total = Rp."<<(total/1000000)<<"jt"<>meto; 417 | if(meto==1){ 418 | string konfir; 419 | cout<<"Konfirmasi y/n?"; 420 | cin>>konfir; 421 | if(konfir=="y" || konfir=="Y"){ 422 | system("cls"); 423 | pilihwarna(112); 424 | cout<<"|=====================================================================================================================|"<>dwid; 451 | if(cin.fail()){ 452 | pilihwarna(132); 453 | cout<<"Data Yang Anda Masukkan Salah !\n"; 454 | pilihwarna(135); 455 | cin.clear(); 456 | cin.ignore(); 457 | goto dwidd; 458 | } 459 | else { 460 | if(dwid>=total/1000000){ 461 | cout<<"Total Pembayaran = "<>dwid; 474 | } 475 | } 476 | konfir: 477 | cout<> meto; 551 | } 552 | //############################################################################################################################## 553 | //############################################################################################################################## 554 | //############################################################################################################################## 555 | angsur: 556 | cout<<"Masukkan DP(jt)= Rp."; 557 | int dp; 558 | float angsuran; 559 | cin>>dp; 560 | if(dp>total/1000000){ 561 | system("cls"); 562 | pilihwarna(132); 563 | cout<<" DP Harus Kurang Dari Harga Total ! \n"; 564 | pilihwarna(135); 565 | goto dp; 566 | } 567 | else if(cin.fail()){ 568 | system("cls"); 569 | cin.clear(); 570 | cin.ignore(); 571 | pilihwarna(132); 572 | cout<<"Tolong Isi Dengan Benar !"<> dp; 576 | } 577 | cout<> pildp; 677 | } 678 | cout<<"cicilan Pokok = Rp."<>x; 685 | if (x=="y" || x=="Y"){ 686 | system("cls"); 687 | pilihwarna(112); 688 | cout<<"|===================================================================================================================|"< 2 | #include 3 | #define max 10 4 | 5 | using namespace std; 6 | 7 | struct dataBuku 8 | { 9 | int id; 10 | string judul; 11 | double harga; 12 | } buku[max]; 13 | 14 | struct stack 15 | { 16 | int top = -1; 17 | dataBuku buku[max]; 18 | } stacked; 19 | 20 | bool penuh(); 21 | bool kosong(); 22 | 23 | void input(dataBuku &baru); 24 | void hapus(); 25 | void hapusSemua(); 26 | void show(dataBuku &baru); 27 | void searchId(); 28 | void searchJudul(); 29 | 30 | int main() 31 | { 32 | int counter = 0; 33 | dataBuku baru[max]; 34 | awal: 35 | system("cls"); 36 | cout << "Aplikasi Manajemen Buku Perpustakaan\n"; 37 | cout << "Menu : \n"; 38 | cout << "1. Tambah Data\n"; 39 | cout << "2. Hapus Data\n"; 40 | cout << "3. Hapus Semua Data\n"; 41 | cout << "4. Lihat Data\n"; 42 | cout << "5. Cari Data\n"; 43 | cout << "6. Exit\n"; 44 | cout << "Pilihan Anda : "; 45 | int pil; 46 | cin >> pil; 47 | switch (pil) 48 | { 49 | case 1: 50 | input(baru[counter]); 51 | counter++; 52 | goto awal; 53 | break; 54 | case 2: 55 | hapus(); 56 | goto awal; 57 | break; 58 | case 3: 59 | hapusSemua(); 60 | goto awal; 61 | break; 62 | case 4: 63 | show(baru[0]); 64 | goto awal; 65 | break; 66 | case 5: 67 | system("cls"); 68 | cout << "Pilih Metode Search : \n"; 69 | cout << "1.Search Data Berdasarkan ID\n"; 70 | cout << "2.Search Data Berdasarkan Judul\n"; 71 | cout << "Masukkan Pilihan = "; 72 | int pil; 73 | cin >> pil; 74 | if (pil == 1) 75 | { 76 | searchId(); 77 | } 78 | else if (pil == 2) 79 | { 80 | searchJudul(); 81 | } 82 | else 83 | { 84 | cout << "Pilihan Anda Salah !"; 85 | } 86 | goto awal; 87 | break; 88 | case 6: 89 | cout << "terimakasih !"; 90 | break; 91 | } 92 | } 93 | bool penuh() 94 | { 95 | if (stacked.top == max - 1) 96 | { 97 | return true; 98 | } 99 | else 100 | { 101 | return false; 102 | } 103 | } 104 | bool kosong() 105 | { 106 | if (stacked.top == -1) 107 | { 108 | return true; 109 | } 110 | else 111 | { 112 | return false; 113 | } 114 | } 115 | 116 | void input(dataBuku &baru) 117 | { 118 | if (kosong()) 119 | { 120 | stacked.top++; 121 | stacked.buku[stacked.top]; 122 | system("cls"); 123 | cout << "Isi Data Buku : \n"; 124 | cout << "Masukkan id (int) : \n"; 125 | cin >> stacked.buku[stacked.top].id; 126 | cin.ignore(1, '\n'); 127 | cout << "Masukkan Judul (Str) : \n"; 128 | getline(cin, stacked.buku[stacked.top].judul); 129 | cout << "Masukkan harga (Float) : \n"; 130 | cin >> stacked.buku[stacked.top].harga; 131 | system("cls"); 132 | cout << "buku " << stacked.buku[stacked.top].judul << " Berhasil Ditambah !\n"; 133 | } 134 | else if (!penuh()) 135 | { 136 | stacked.top++; 137 | stacked.buku[stacked.top]; 138 | system("cls"); 139 | cout << "Isi Data Buku : \n"; 140 | cout << "Masukkan id (int) : \n"; 141 | cin >> stacked.buku[stacked.top].id; 142 | cin.ignore(1, '\n'); 143 | cout << "Masukkan Judul (Str) : \n"; 144 | getline(cin, stacked.buku[stacked.top].judul); 145 | cout << "Masukkan harga (Float) : \n"; 146 | cin >> stacked.buku[stacked.top].harga; 147 | system("cls"); 148 | cout << "buku " << stacked.buku[stacked.top].judul << " Berhasil Ditambah !\n"; 149 | } 150 | else 151 | { 152 | system("cls"); 153 | cout << "Stack Telah Penuh !\n"; 154 | } 155 | } 156 | void hapus() 157 | { 158 | if (!kosong()) 159 | { 160 | system("cls"); 161 | cout << "Data Teratas Sudah Dihapus!"; 162 | sleep(3); 163 | stacked.top--; 164 | } 165 | else 166 | { 167 | system("cls"); 168 | cout << "Data Kosong !"; 169 | sleep(3); 170 | } 171 | } 172 | void hapusSemua() 173 | { 174 | stacked.top = -1; 175 | system("cls"); 176 | cout << "Stack Telah Kosong !"; 177 | sleep(3); 178 | } 179 | void show(dataBuku &baru) 180 | { 181 | if (!kosong()) 182 | { 183 | system("cls"); 184 | for (int x = 0; x <= stacked.top; x++) 185 | { 186 | cout << "\n\nbuku ke - " << x + 1 << endl; 187 | cout << "\nid : " << stacked.buku[x].id; 188 | cout << "\njudul : " << stacked.buku[x].judul; 189 | cout << "\nharga : " << stacked.buku[x].harga; 190 | } 191 | cout << "\nTekan Sembarang + enter untuk lanjut\n"; 192 | string sembarang; 193 | cin >> sembarang; 194 | } 195 | else 196 | { 197 | system("cls"); 198 | cout << "Stack Kosong !\n"; 199 | sleep(3); 200 | } 201 | } 202 | void searchId() 203 | { 204 | cout << "Masukkan ID yang ingin anda Cari :"; 205 | int cari; 206 | bool ketemu = false; 207 | cin >> cari; 208 | for (int x = 0; x <= stacked.top; x++) 209 | { 210 | if (stacked.buku[x].id == cari) 211 | { 212 | ketemu = true; 213 | if (ketemu) 214 | { 215 | cout << "Data Berhasil Ditemukan !\n"; 216 | cout << "id : " << stacked.buku[x].id << endl; 217 | cout << "judul : " << stacked.buku[x].judul << endl; 218 | cout << "harga : " << stacked.buku[x].harga << endl; 219 | } 220 | else 221 | { 222 | cout << "Data Tidak Ditemukan !\n"; 223 | } 224 | break; 225 | } 226 | } 227 | cout << "\nTekan Sembarang + enter untuk lanjut\n"; 228 | string sembarang; 229 | cin >> sembarang; 230 | } 231 | void searchJudul() 232 | { 233 | cout << "Masukkan Judul yang ingin anda Cari :"; 234 | string cari; 235 | bool ketemu; 236 | cin.ignore(1, '\n'); 237 | getline(cin, cari); 238 | for (int x = 0; x <= stacked.top; x++) 239 | { 240 | if (stacked.buku[x].judul == cari) 241 | { 242 | ketemu = true; 243 | x = stacked.top; 244 | } 245 | if (ketemu) 246 | { 247 | cout << "Data Berhasil Ditemukan !\n"; 248 | cout << "id : " << stacked.buku[x].id << endl; 249 | cout << "judul : " << stacked.buku[x].judul << endl; 250 | cout << "harga : " << stacked.buku[x].harga << endl; 251 | } 252 | else 253 | { 254 | cout << "Data Tidak Ditemukan !\n"; 255 | } 256 | } 257 | cout << "\nTekan Sembarang + enter untuk lanjut\n"; 258 | string sembarang; 259 | cin >> sembarang; 260 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Tutorial C++ dan Contoh Implementasi 3 | 4 | ## Deskripsi Proyek 5 | 6 | Proyek ini berisi tutorial dan contoh implementasi bahasa pemrograman **C++** yang dapat digunakan untuk belajar dasar hingga konsep lanjutan. 7 | 8 | - **Folder `Tutorial`**: Berisi file tutorial yang menjelaskan berbagai fitur dan sintaks dasar C++. 9 | - **Folder `Project & Example`**: Berisi berbagai contoh proyek sederhana untuk mengaplikasikan konsep yang telah dipelajari. 10 | 11 | --- 12 | 13 | ## Get Started 14 | 15 | Untuk memulai, pastikan Anda memiliki alat-alat berikut: 16 | 17 | 1. **Text Editor**: Disarankan menggunakan Visual Studio Code atau editor lainnya. 18 | 2. **Compiler**: GCC, MinGW, atau Dev++. 19 | 3. **Repositori**: Salin repositori ini menggunakan Git. 20 | 21 | --- 22 | 23 | ## Cara Kompilasi 24 | 25 | Gunakan perintah berikut untuk mengompilasi file C++ di direktori yang sama: 26 | 27 | ```bash 28 | g++ [NamaFile.cpp] -o [NamaOutput.exe] 29 | ``` 30 | 31 | Contoh: 32 | 33 | ```bash 34 | g++ 2.AssignVariabel.cpp -o AssignVar.exe 35 | ``` 36 | 37 | Kemudian, jalankan file hasil kompilasi: 38 | 39 | ```bash 40 | ./AssignVar.exe 41 | ``` 42 | 43 | --- 44 | 45 | ## List Tutorial 46 | 47 | Berikut adalah daftar tutorial yang tersedia: 48 | 49 | - [Hello World](/Tutorial/1.Hello%20World.cpp) 50 | - [Assigning Variables](/Tutorial/2.AssignVariabel.cpp) 51 | - [Input Into Variables](Tutorial/3.Variabel.cpp) 52 | - [Operator Aritmatika](Tutorial/4.Operator.cpp) 53 | - [Operator Assignment](Tutorial/5.AssignOperator.cpp) 54 | - [Statement Kondisional](Tutorial/6.Percabangan.cpp) 55 | - [Komparasi Antar Variabel](Tutorial/7.Comparator.cpp) 56 | - [Kompilasi Operator Dari Input](Tutorial/8.InputOperator.cpp) 57 | - [Looping For, While, Do While](Tutorial/9.Looping.cpp) 58 | - [Switch Case](Tutorial/10.Switch.cpp) 59 | 60 | --- 61 | 62 | ## List Project & Example 63 | 64 | Berikut adalah contoh-contoh proyek sederhana: 65 | 66 | - [Segitiga](Project%20&%20Example/Project%20Segitiga.cpp) 67 | - [Lingkaran](Project%20&%20Example/ProjectLingkaran.cpp) 68 | - [Faktorial](Project%20&%20Example/ProjectFaktorial.cpp) 69 | - [Kalkulator](Project%20&%20Example/ProjectKalkulator.cpp) 70 | - [NestedLoop](Project%20&%20Example/ProjectNestedLoop.cpp) 71 | - [Min & Max](Project%20&%20Example/ProjectNilaiMinimum&Maximum.cpp) 72 | - [Project Parkir](Project%20&%20Example/ProjectParkir.cpp) 73 | - [Final Project Perumahan](Project%20&%20Example/ProjectPerumahan.cpp) 74 | - [Responsi 3](Project%20&%20Example/Responsi3.cpp) 75 | 76 | --- 77 | 78 | ## List Tutorial Part 2 79 | 80 | Berikut adalah tutorial lanjutan: 81 | 82 | - [Array Index](Tutorial2/1.ArrayIndex.cpp) 83 | - [Input Array Index](Tutorial2/2.InputArrayIndex.cpp) 84 | - [Array Multidimensi](Tutorial2/3.Multidimensional_array.cpp) 85 | - [Pointer](Tutorial2/4.Pointer.cpp) 86 | - [Referensi Pointer dan Dereferensi Pointer](Tutorial2/5.Dereferensi_Pointer.cpp) 87 | - [Replace Pointer](Tutorial2/6.Replace_Pointer.cpp) 88 | - [Fungsi](Tutorial2/7.Fungsi.cpp) 89 | - [Cek Panjang Karakter Menggunakan Pointer](Tutorial2/8.Cek_Length_Dengan_Pointer.cpp) 90 | - [Looping Array Dengan Pointer](Tutorial2/9.Looping_Dengan_Array.cpp) 91 | - [Searching Metode Sekuensial](Tutorial2/10.Metode_Search_1.cpp) 92 | - [Searching Metode Binary](Tutorial2/11.Metode_Search_2.cpp) 93 | - [Menghitung Kalimat dan Kata Pada String Dengan Pointer](Tutorial2/12.Menghitung_Kalimat.cpp) 94 | - [Min dan Max Dalam Pointer](Tutorial2/13.MinMax_Pointer.cpp) 95 | - [Alokasi dan Dealokasi Memori Dinamis 1](Tutorial2/14.MemoriDinamis.cpp) 96 | - [Alokasi dan Dealokasi Memori Dinamis 2](Tutorial2/15.MemoriDinamis2.cpp) 97 | - [Metodologi Search Dalam Array](Tutorial2/16.SearchDalamArray.cpp) 98 | - [Metodologi Search String Binary](Tutorial2/17.BinarySearchString.cpp) 99 | - [Sorting Bubble, Selection, Insertion dengan ASC/DESC](Tutorial2/18.SortFinal.cpp) 100 | - [Introduksi Struct](Tutorial2/19.Struct.cpp) 101 | - [Input Output Menggunakan Array of Struct](Tutorial2/20.IOStruct.cpp) 102 | - [Queue / Antrian](Tutorial2/21.queue.cpp) 103 | - [Stack / Tumpukan](Tutorial2/22.stack.cpp) 104 | - [Linked List](Tutorial2/23.LinkedList.cpp) 105 | 106 | --- 107 | -------------------------------------------------------------------------------- /Tutorial/1.Hello World.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | //dalam cpp untuk meng output kan sebuah kalimat, diperlukan cout<< dengan tulisan dalam tanda kutip, 7 | //karna ia dibaca sebagai string 8 | cout<<"Halo Dunia !"; 9 | return 0; 10 | } 11 | -------------------------------------------------------------------------------- /Tutorial/10.Switch.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | //deklarasi variabel x 7 | int x; 8 | cout<<"Silahkan isi Angka x \n"; 9 | //assign nilai x dari inputan user 10 | cin>>x; 11 | //percabangan dimulai 12 | switch (x){ 13 | //jika user input 1 maka akan mengeluarkan tulisan nilai x adalah 1 14 | case 1: 15 | cout<<"nilai x adalah 1"; 16 | break; 17 | //begitupun dengan yang lain, tergantung dari case nya 18 | case 2: 19 | cout<<"nilai x adalah 2"; 20 | break; 21 | case 3: 22 | cout<<"nilai x adalah 3"; 23 | break; 24 | case 4: 25 | cout<<"nilai x adalah 4"; 26 | break; 27 | //ini adalah "else" nya dari switch, dijalankan jika tidak ada kecocokan diantara semua case diatas 28 | default : 29 | cout<<"bukan semuanya"; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Tutorial/11.BasicClass.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | 4 | // Membuat class baru dengan nama Foo 5 | class Foo { 6 | /** 7 | * Visibility modifier. 8 | * public -> Fungsi dan atau field bisa diakses dari luar kelas 9 | * private -> Fungsi dan atau field hanya bisa diakses hanya untuk kelas itu sendiri 10 | */ 11 | public: 12 | 13 | // Membuat default constructor dengan tanpa parameter 14 | // Constructor akan dipanggil terlebih dahulu saat object class diinisiasikan 15 | Foo() { 16 | cout << "Ini adalah constructor, dipanggil saat diinisasi" << endl; 17 | } 18 | 19 | // Sebuah fungsi yang terdapat pada suatu kelas. 20 | // Biasanya melakukan hal hal yang spesifik 21 | // Dan dipanggil secara manual (oleh programmer). 22 | void doAction() { 23 | cout << "Do Action: Fungsi do action dipanggil!" << endl; 24 | } 25 | 26 | // Ini adalah Destructor 27 | // Dipanggil sebelum sebuah instance dari suatu class di delete dari memory. 28 | // Ini berguna ketika kita mengalokasikan memori secara dinamis maupun mengakses sebuah stream 29 | // Dimana harus untuk direlease agar tidak terjadi memory leaks 30 | ~Foo() { 31 | cout << "Ini adalah destructor, dipanggil sebelum object class di delete" << endl; 32 | } 33 | }; 34 | 35 | // Entry point function dari Cpp, dipanggil pertama kali. 36 | int main() { 37 | 38 | // Inisiasi sebuah object class 39 | Foo foo; 40 | 41 | // Memanggil sebuah fungsi dari instance class Foo (doAction()) 42 | foo.doAction(); 43 | 44 | // Eksekusi kode pada function ini berakhir. Seluru resources yang ada di fungsi ini di release / di hapus dari memory 45 | // Termasuk instance foo, destructor dari class Foo dipanggil. 46 | } 47 | -------------------------------------------------------------------------------- /Tutorial/2.AssignVariabel.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | //disini saya deklarasikan sebuah variabel dengan nama X 7 | string x; 8 | int angka; 9 | //disini saya isi variabel x dengan sebuah string 10 | x = "Halo variabel"; 11 | angka = 5; 12 | //disini saya output kan nilai dari variabel x 13 | cout< 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | //disini saya deklarasi sebuah variabel bernama x 7 | string x; 8 | //disini saya output sebuah tulisan = 9 | cout<<"Isi Namamu = "; 10 | //variabel x diisi dengan inputan dari user 11 | cin>>x; 12 | //kemudian kita cout variabel yang telah kita isi 13 | cout<<"hai, "< 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | //disini saya deklarasikan sebuah variabel dengan nama X dan y 7 | int x,y; 8 | //disini saya isi variabel x dan y dengan sebuah angka 9 | x = 40; 10 | y = 30; 11 | //disini saya output kan nilai dari variabel perjumlahan x + y 12 | cout<<"hasil Dari 40 tambah 30 adalah "< 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | //disini saya deklarasikan sebuah variabel dengan nama X dan y 7 | int x,y; 8 | //disini saya isi variabel x dan y dengan sebuah input dari user 9 | cout<<"isi Nilai pertama = \n"; 10 | cin>>x; 11 | //disini saya menggunakan operator assignment 12 | //operator assignment adalah me "merge" nilai dari variabel yang telah kita buat 13 | //semisal x adalah 2, ditambah 1, hasilnya adalah 3, skrg nilai x adalah 3 14 | //dibawah ini saya menambah variabel yang TELAH Diinput User Dengan Nilai 10 15 | x+=10; 16 | //kita output nilainya 17 | cout<<"hasil dari x ditambah 10 adalah "< 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | int x; 7 | cout<<"Silahkan isi Angka x \n"; 8 | cin>>x; 9 | if (x>5){ 10 | cout<<"x lebih besar dari 5"; 11 | } 12 | else if (x<5){ 13 | cout<<"x lebih kecil dari 5"; 14 | } 15 | else { 16 | cout<<"bukan keduanya"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Tutorial/7.Comparator.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | //int main wajib dalam sebuah codingan cpp, dia sebagai "body" utama c++ 4 | int main() 5 | { 6 | //disini saya deklarasikan sebuah variabel dengan nama X dan y 7 | int x,y; 8 | //disini saya isi variabel x dan y dengan sebuah input dari user 9 | cout<<"isi Nilai pertama = \n"; 10 | cin>>x; 11 | cout<<"isi Nilai Kedua = \n"; 12 | cin>>y; 13 | //disini kita akan membandingkan antara x dan y 14 | cout<<"0=false, 1=true\n"; 15 | cout<<"apakah x sama dengan y ? = "<<(x==y)<>x; 11 | cout<<"isi Nilai Kedua = \n"; 12 | cin>>y; 13 | //disini saya output kan nilai dari variabel perjumlahan x + y 14 | cout<<"hasil Dari "<>x; 11 | //untuk while, kita buat sebuah variabel dengan nama y, yang diisi dengan nilai 0 12 | int y=0; 13 | cout<<"---------------WHILE--------------\n"; 14 | //selama y kurang dari x, lakukan y ditambah 1, sampai si y ini sama dengan si x 15 | while(y 2 | using namespace std; 3 | int main(){ 4 | //array adalah sebuah tipe data yang mengandung banyak variabel, dapat menampung banyak nilai 5 | //daripada buat 5 variabel dengan nama berbeda lebih baik membuat 1 variabel dengan cara memanggil yang berbeda 6 | //disini saya membuat array bertipe string yang berisi 3 "Slot" atau Element 7 | string mobil[3]; 8 | //kita assignment tiap element dengan string 9 | //INGAT ! Index Array Selalu Dimulai Dari 0, Jadi Jika 3 Element, Kita Panggil Dengan array ke 0, ke 1, dan ke 2 10 | mobil[0]="Suzuki"; 11 | mobil[1]="Mazda"; 12 | mobil[2]="BMW"; 13 | //disini saya output kan secara langsung element yang telah diisi 14 | cout<<"Mobil Pertama Adalah "< 2 | using namespace std; 3 | int main(){ 4 | //membuat array berisi banyak data acak 5 | int larik[15]={23,1,5,4,8,2,6,2,8,9,32,5,9,1,99}; 6 | int i,x,posisi; 7 | cout<<"Data Yang Ingin Anda Cari = "; 8 | cin>>x; 9 | i = 0; 10 | posisi=0; 11 | //looping selama si i kurang dri 15 dan larik i tidak sama dengan permintaan user 12 | while (i<15 && larik[i]!=x) 13 | { 14 | i++; 15 | } 16 | //setelah di looping dan masih gk ketemu 17 | if(larik[i]!=x){ 18 | cout<<"data yang anda temukan tidak ada"; 19 | } 20 | //setelah looping dan ketemu 21 | else if(larik[i]==x){ 22 | //assign posisi saat ini + 1 23 | posisi=i+1; 24 | cout<<"ketemu donk pada posisi "< 2 | //membuat konstanta 3 | #define true 1 4 | #define false 0 5 | using namespace std; 6 | int main(){ 7 | //membuat array yang sudah berurutan 8 | int larik[]={1,2,3,4,5,6,7,8,9,10,11,12}; 9 | int i=0,ia=0,ib=12,k,x; 10 | bool ketemu; 11 | cout<<"Masukkan Data Yang Akan Dicari !"; 12 | cin>>x; 13 | //ketika awal ketemu masih false 14 | ketemu=false; 15 | //kita potong menjadi pertengahan diantara banyaknya array 16 | k=(ia+ib)/2; 17 | //looping teroooss 18 | while (!ketemu&&ia<=ib) 19 | { 20 | //kalau larik k cocok sama x maka ketemu true 21 | if(larik[k]==x){ 22 | ketemu=true; 23 | } 24 | //klo nggk dia bakal geser ke kiri / kanan tergantung besar kecilnya inputan 25 | else{ 26 | if(larik[k] 2 | using namespace std; 3 | //deklarasi fungsi 4 | int itungKalimat(string x); 5 | int itungKata(string x); 6 | int main() { 7 | //membuat variabel dan pointernya 8 | string kalimat; 9 | string *pointer_kalimat = &kalimat; 10 | cout<<"Masukkan Kalimat Anda = "; 11 | //input beserta spasi 12 | getline(cin,kalimat); 13 | //pemanggilan fungsi 14 | cout<<"Jumlah Kalimat Anda Adalah = "< 2 | using namespace std; 3 | int main(){ 4 | 5 | int pesanan; 6 | cout<<"Input Jumlah Elemen Yang Ingin Dipesan = "; 7 | cin>>pesanan; 8 | //membuat array biasa 9 | string NIM [pesanan], 10 | Nama [pesanan], 11 | kelas [pesanan]; 12 | //membuat pointer dari si array yang berisi alamat memori 13 | string *PNim = &NIM [pesanan], 14 | *PNama = &Nama [pesanan], 15 | *Pkelas = &kelas [pesanan]; 16 | cout<<"memori Telah Dipesan Sebanyak "< 2 | using namespace std; 3 | int main(){ 4 | int jumkar; 5 | //input jumlah karakter 6 | cout<<"Masukkan Jumlah Karakter = ";cin>>jumkar; 7 | //membuat pointer char yg elementnya terdiri dari banyaknya jumkar 8 | char *nama = new char[jumkar]; 9 | //pointer pnama adalah nilai dari nama 10 | char *pnama = nama; 11 | cout<<"Masukkan nama anda = ";cin>>nama; 12 | for(int x=0;x 2 | //library buat pemanggilan fungsi c_str() 3 | #include 4 | using namespace std; 5 | int jum=0,posisi[100]; 6 | int main(){ 7 | cout<<"masukkan Kalimat Anda = "; 8 | string kalimat; 9 | //ambil 1 kalimat full 10 | getline(cin,kalimat); 11 | char satuan[100],cari; 12 | //copy kalimat string menjadi char 13 | strcpy(satuan,kalimat.c_str()); 14 | //mengambil jumlah huruf si kalimat 15 | int panjang = kalimat.length(); 16 | cout<<"Susunan Per Huruf = "<"< 2 | //library algoritma untuk search 3 | #include 4 | using namespace std; 5 | int main(){ 6 | cout<<"Masukkan Jumlah Kalimat ="; 7 | int jumlah; 8 | string kalimat[100]; 9 | cin>>jumlah; 10 | //assign array nya 11 | for(int x=0;x 2 | 3 | using namespace std; 4 | 5 | int jumlah, pilihan, metod; 6 | 7 | void Bubble(string *datax,int method,int ujung); 8 | void Tampil(string *datax,int ujung); 9 | void Selection(string *datax,int method,int ujung); 10 | void Insertion(string *a,int method,int n); 11 | 12 | int main() 13 | { 14 | cout<<"Nama : Muhammad Rafly Indrawan\nNIM : 19.11.2888\n"; 15 | cout<<"Masukkan Jumlah Data = "; 16 | cin>>jumlah; 17 | string datax[jumlah]; 18 | for (int x=0;x>datax[x]; 22 | } 23 | metode: 24 | cout<<"Silahkan Pilih Metode Sorting :\n"; 25 | cout<<"1.Bubble Sort\n"; 26 | cout<<"2.Selection Sort\n"; 27 | cout<<"3.Insertion Sort\n"; 28 | cout<<"Pilihan Anda = "; 29 | cin>>pilihan; 30 | if(pilihan==1) 31 | { 32 | cout<<"Silahkan Pilih Jenis Pengurutan\n"; 33 | cout<<"1.Ascending\n"; 34 | cout<<"2.Descending\n"; 35 | cout<<"Pilihan Anda = "; 36 | cin>>metod; 37 | system("cls"); 38 | Bubble(datax, metod, jumlah); 39 | } 40 | else if(pilihan==2) 41 | { 42 | cout<<"Silahkan Pilih Jenis Pengurutan\n"; 43 | cout<<"1.Ascending\n"; 44 | cout<<"2.Descending\n"; 45 | cout<<"Pilihan Anda = "; 46 | cin>>metod; 47 | system("cls"); 48 | Selection(datax,metod,jumlah); 49 | } 50 | else if(pilihan==3) 51 | { 52 | cout<<"Silahkan Pilih Jenis Pengurutan\n"; 53 | cout<<"1.Ascending\n"; 54 | cout<<"2.Descending\n"; 55 | cout<<"Pilihan Anda = "; 56 | cin >>metod; 57 | system("cls"); 58 | Insertion(datax,metod,jumlah); 59 | } 60 | else 61 | { 62 | cout<<"Input Salah !\n"; 63 | goto metode; 64 | } 65 | } 66 | void tampil(string *datax,int ujung) 67 | { 68 | for(int x=0;xdatax[y+1]) 85 | { 86 | string temp; 87 | temp=datax[y]; 88 | datax[y]=datax[y+1]; 89 | datax[y+1]=temp; 90 | } 91 | } 92 | cout<<"\nTahap ke - "<datax[j]) 136 | mins=j; 137 | } 138 | if (datax[i]!=datax[mins]) 139 | { 140 | temp=datax[i]; 141 | datax[i]=datax[mins]; 142 | datax[mins]=temp; 143 | } 144 | } 145 | tampil(datax,ujung); 146 | } 147 | else if(method==2){ 148 | cout << "\nData Setelah Perurutan (Selection Desc) : \n"; 149 | for (int i=0;i=0&&a[j]>temp) 188 | { 189 | a[j+1]=a[j]; 190 | j=j-1; 191 | } 192 | a[j+1]=temp; 193 | } 194 | tampil(a,n); 195 | } 196 | else if(method==2) 197 | { 198 | cout << "\nData Setelah Perurutan (Insertion Desc) : \n"; 199 | for (j=1;j=0)&&(a[i] 2 | using namespace std; 3 | //Deklarasi Struct Dengan 4 Member (2x Char 2x Int) Dalam C++ 4 | struct game{ 5 | const char* nama; 6 | const char* genre; 7 | int sizeGb; 8 | int tahunRilis; 9 | }; 10 | int main(){ 11 | //membuat struct layaknya Constructor Pada Paradigma OOP 12 | game GTAV = {"Grand Theft Auto V","Open-World,Action,Shooter",58,2013}; 13 | //Output Dari Setiap Member Value Struct 14 | cout<<"\t\t+++++ Game +++++"< 2 | using namespace std; 3 | int main(){ 4 | //deklarasi array sebanyak 10 element, jadi hanya dapat menampung 10 penghutang 5 | string Nama[10]; 6 | //kanghutang adalah variabel yg berisi jumlah penghutang 7 | int KangHutang; 8 | //duid adalah nominal uang sang penghutang 9 | string Duid[10]; 10 | cout<<"Daftar Hutang ! \n"; 11 | cout<<"Masukkan Jumlah Penghutang Hari ini = "; 12 | //assign variabel kanghutang 13 | cin>>KangHutang; 14 | //looping setiap element untuk diisi sebanyak jumlah kanghutang 15 | //assign variabel nama penghutang beserta jumlah hutangnya 16 | for(int x=0;x 2 | #include 3 | using namespace std; 4 | //deklarasi struct dengan 4 member (2x String 2x Int) 5 | struct game 6 | { 7 | string nama; 8 | string merk; 9 | int harga; 10 | int tahunPabrik; 11 | }; 12 | //deklarasi inisialisasi sebuah fungsi dengan argument berupa struct 13 | void input_data(game &baru); 14 | void print_data(const game &baru); 15 | void print_judul(game &baru); 16 | 17 | int main() 18 | { 19 | //deklarasi array of struct dengan 20 struct 20 | 21 | int jumlah, pilihan; 22 | system("cls"); 23 | cout << "Aplikasi Input Data Elektronik" << endl; 24 | cout << "Masukkan Jumlah Data Yang Akan Diinput = "; 25 | cin >> jumlah; 26 | game baru[jumlah]; 27 | //looping input 28 | for (int x = 0; x < jumlah; x++) 29 | { 30 | system("cls"); 31 | cout << "Barang ke-" << (x + 1) << endl; 32 | input_data(baru[x]); 33 | } 34 | //looping output judul 35 | system("cls"); 36 | for (int x = 0; x < jumlah; x++) 37 | { 38 | cout << x + 1 << "."; 39 | print_judul(baru[x]); 40 | cout << endl; 41 | } 42 | cout << "Tampilkan Barang no = "; 43 | cin >> pilihan; 44 | //branching jika pilihan lebih dari jumlah struct 45 | if (pilihan <= jumlah) 46 | { 47 | print_data(baru[pilihan - 1]); 48 | } 49 | else 50 | { 51 | cout << "Maaf Data Tidak Ada :)"; 52 | } 53 | return 0; 54 | } 55 | //fungsi input struct dengan 1 argumen 56 | void input_data(game &baru) 57 | { 58 | cout << "Input Data Barang !" << endl; 59 | cin.ignore(1, '\n'); 60 | cout << "Nama Barang = "; 61 | getline(cin, baru.nama); 62 | cout << "Merk = "; 63 | getline(cin, baru.merk); 64 | cout << "Harga = "; 65 | cin >> baru.harga; 66 | cout << "Tahun Pabrik = "; 67 | cin >> baru.tahunPabrik; 68 | } 69 | //fungsi print struct dengan 1 argumen konstan 70 | void print_data(const game &baru) 71 | { 72 | cout << "Nama Barang \t: " << baru.nama << endl; 73 | cout << "Merk \t\t: " << baru.merk << endl; 74 | cout << "Harga \t\t: " << baru.harga << " Rupiah." << endl; 75 | cout << "Tahun Pabrik \t: " << baru.tahunPabrik << endl; 76 | } 77 | //fungsi print judul struct dengan 1 argumen 78 | void print_judul(game &baru) 79 | { 80 | cout << baru.nama << endl; 81 | } -------------------------------------------------------------------------------- /Tutorial2/21.queue.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #define MAX 10 4 | 5 | using namespace std; 6 | struct antrianSembako{ 7 | int data[MAX]; 8 | string penerima[MAX]; 9 | int head; 10 | int tail; 11 | } antrian; 12 | void init(); 13 | bool isKosong(); 14 | bool isPenuh(); 15 | void showData(); 16 | void enqueue(); 17 | void dequeue(); 18 | int main(){ 19 | int pilihan; 20 | awal: 21 | cout<<"Menu Sembako\n"; 22 | cout<<"++++++++++++\n"; 23 | cout<<"1.Buat Antrian Sembako\n"; 24 | cout<<"2.Tambah Penerima Sembako yang akan mengambil\n"; 25 | cout<<"3.Hapus Penerima Sembako Yang Telah Mengambil\n"; 26 | cout<<"4.Lihat Antrian Sekarang\n"; 27 | cout<<"5.keluar\n"; 28 | cout<<"++++++++++++\n"; 29 | cout<<"Pilihan Anda ="; 30 | cin>>pilihan; 31 | switch (pilihan) 32 | { 33 | case 1: 34 | init(); 35 | goto awal; 36 | break; 37 | case 2: 38 | enqueue(); 39 | goto awal; 40 | break; 41 | case 3: 42 | dequeue(); 43 | goto awal; 44 | break; 45 | case 4: 46 | showData(); 47 | goto awal; 48 | break; 49 | case 5 : 50 | break; 51 | default: 52 | cout<<"Pilihan Anda Salah!"; 53 | break; 54 | } 55 | } 56 | void init(){ 57 | antrian.head=0; 58 | antrian.tail=0; 59 | system("cls"); 60 | cout<<"antrian berhasil dibuat !\n"; 61 | } 62 | bool isKosong(){ 63 | if(antrian.tail==0){ 64 | return true; 65 | } 66 | else{ 67 | return false; 68 | } 69 | } 70 | bool isPenuh(){ 71 | if(antrian.head==MAX){ 72 | return true; 73 | } 74 | else{ 75 | return false; 76 | } 77 | } 78 | void showData(){ 79 | system("cls"); 80 | if(!isKosong()){ 81 | for(int x = antrian.head;x 2 | #include 3 | //define max 4 | #define max 10 5 | 6 | using namespace std; 7 | 8 | //declare struct with 2 attr 9 | struct stack 10 | { 11 | int top; 12 | int data[max]; 13 | } stacked; 14 | 15 | // int type func declare 16 | int full(); 17 | int empty(); 18 | 19 | //void type func declare 20 | void input(int data); 21 | void first(); 22 | void show(); 23 | void clean(); 24 | void deleteStack(); 25 | 26 | int main() 27 | { 28 | int choice,data; 29 | first(); 30 | do{ 31 | cout<<"Stacking C++ Example\n"; 32 | cout<<"1.Input\n"; 33 | cout<<"2.Hapus\n"; 34 | cout<<"3.Show Data\n"; 35 | cout<<"4.Clear Data\n"; 36 | cout<<"5.Exit\n\n"; 37 | cout<<"masukkan pilihan anda = "; 38 | cin>>choice; 39 | switch (choice) 40 | { 41 | case 1 : 42 | cout<<"Masukkan Data = "; 43 | cin>>data; 44 | input(data); 45 | break; 46 | case 2 : 47 | deleteStack(); 48 | break; 49 | case 3 : 50 | show(); 51 | break; 52 | case 4 : 53 | clean(); 54 | break; 55 | case 5 : 56 | cout<<"Terimakasih !"; 57 | default: 58 | break; 59 | } 60 | }while (choice!=5); 61 | } 62 | 63 | int full() 64 | { 65 | if (stacked.top == max - 1) 66 | { 67 | return true; 68 | } 69 | else 70 | { 71 | return false; 72 | } 73 | } 74 | int empty() 75 | { 76 | if (stacked.top == -1) 77 | { 78 | return true; 79 | } 80 | else 81 | { 82 | return false; 83 | } 84 | } 85 | 86 | void input(int x) 87 | { 88 | if (empty()) 89 | { 90 | stacked.top++; 91 | stacked.data[stacked.top] = x; 92 | system("cls"); 93 | cout << "data " << stacked.data[stacked.top] << " Telah Masuk ke stack!\n"; 94 | } 95 | else if (!full()) 96 | { 97 | stacked.top++; 98 | stacked.data[stacked.top] = x; 99 | system("cls"); 100 | cout << "data " << stacked.data[stacked.top] << " Telah Masuk ke stack!\n"; 101 | } 102 | else 103 | { 104 | system("cls"); 105 | cout << "Stack Telah penuh !\n"; 106 | } 107 | } 108 | void first() 109 | { 110 | stacked.top = -1; 111 | } 112 | 113 | void show() 114 | { 115 | if(!empty()){ 116 | system("cls"); 117 | for(int x =stacked.top;x>=0;x--){ 118 | cout<<"Tumpukan ke "< 2 | using namespace std; 3 | 4 | struct Node 5 | { 6 | int data; 7 | Node *next; 8 | }; 9 | 10 | Node *headNode = NULL; 11 | Node *currentNode = NULL; 12 | 13 | bool isEmpty(); 14 | void insertNode(int data); 15 | void insertNodeBack(int data); 16 | void deleteFromFront(); 17 | void deleteFromEnd(); 18 | void deleteAll(); 19 | void printNode(); 20 | 21 | int main() 22 | { 23 | int pilihanMenu; 24 | int data; 25 | do 26 | { 27 | cout << ">>> PILIHAN MENU SINGLY LINKED LIST <<<" << endl << endl; 28 | cout << "1. Menambahkan Node dari depan" << endl; 29 | cout << "2. Menghapus Node dari Depan" << endl; 30 | cout << "3. Menghapus Node dari Belakang" << endl; 31 | cout << "4. Mengosongkan Node" << endl; 32 | cout << "5. Menampilkan Node" << endl; 33 | cout << "6. Selesai" << endl << endl; 34 | cout << "7. Menambahkan Node dari belakang" << endl; 35 | cout << "Masukkan pilihan Anda : "; cin >> pilihanMenu; 36 | cout << endl; 37 | 38 | switch (pilihanMenu) 39 | { 40 | case 1: // menambah node 41 | cout << "Masukkan data : "; cin >> data; 42 | insertNode(data); 43 | break; 44 | 45 | case 2: // menghapus node dari depan 46 | if (isEmpty()) 47 | { 48 | cout << "List masih kosong !!!" << endl << endl; 49 | } 50 | else 51 | { 52 | deleteFromFront(); 53 | } 54 | break; 55 | 56 | case 3: // menghapus node dari belakang 57 | if (isEmpty()) 58 | { 59 | cout << "List masih kosong !!!" << endl << endl; 60 | } 61 | else 62 | { 63 | deleteFromEnd(); 64 | } 65 | break; 66 | 67 | case 4: // mengosongkan node 68 | if (isEmpty()) 69 | { 70 | cout << "List masih kosong !!!" << endl << endl; 71 | } 72 | else 73 | { 74 | deleteAll(); 75 | } 76 | break; 77 | 78 | case 5: // menampilkan node 79 | if (isEmpty()) 80 | { 81 | cout << "List masih kosong !!!" << endl << endl; 82 | } 83 | else 84 | { 85 | printNode(); 86 | } 87 | break; 88 | 89 | case 6: 90 | break; 91 | case 7: 92 | cout << "Masukkan data : "; cin >> data; 93 | insertNodeBack(data); 94 | break; 95 | default: 96 | cout << "Menu yang Anda pilih tidak terdaftar" << endl << endl; 97 | break; 98 | } 99 | 100 | } while (pilihanMenu != 6); 101 | 102 | cout << endl; 103 | system("pause"); 104 | return 0; 105 | } 106 | 107 | bool isEmpty() 108 | { 109 | return (headNode == NULL); 110 | } 111 | 112 | void insertNode(int data) 113 | { 114 | // deklarasi pointer newNode; 115 | Node *newNode = NULL; 116 | 117 | // mengalokasikan memory untuk pointer newNode 118 | newNode = new Node; 119 | 120 | // isikan data ke node yang baru 121 | newNode->data = data; 122 | 123 | if (isEmpty()) // node masih kosong 124 | { 125 | // node baru otomatis menjadi head node 126 | headNode = newNode; 127 | } 128 | else // sudah ada node 129 | { 130 | // hubungkan pointer next node aktif (current node) 131 | // ke node yg baru 132 | currentNode->next = newNode; 133 | } 134 | 135 | // set node baru sebagai node aktif 136 | currentNode = newNode; 137 | 138 | // set pointer next node terakhir menjadi NULL 139 | currentNode->next = NULL; 140 | 141 | cout << "Node berhasil ditambahkan" << endl << endl; 142 | } 143 | 144 | 145 | void insertNodeBack(int data) 146 | { 147 | // deklarasi pointer newNode; 148 | Node *newNode = NULL; 149 | Node *bantuin = headNode; 150 | // mengalokasikan memory untuk pointer newNode 151 | newNode = new Node; 152 | 153 | // isikan data ke node yang baru 154 | newNode->data = data; 155 | 156 | if (isEmpty()) // node masih kosong 157 | { 158 | // node baru otomatis menjadi head node 159 | headNode = newNode; 160 | } 161 | else // sudah ada node 162 | { 163 | // hubungkan pointer next node aktif (current node) 164 | // ke node yg baru 165 | newNode->next = headNode; 166 | } 167 | 168 | // set node baru sebagai node aktif 169 | 170 | headNode=newNode; 171 | 172 | // set pointer next node terakhir menjadi NULL 173 | headNode->next = bantuin; 174 | 175 | cout << "Node berhasil ditambahkan" << endl << endl; 176 | } 177 | 178 | void deleteFromFront() 179 | { 180 | if (!isEmpty()) 181 | { 182 | // deklarasi var bantu untuk menampung headNode 183 | Node *hapusNode = headNode; 184 | 185 | // pindahkan headNode ke node berikutnya 186 | headNode = headNode->next; 187 | 188 | // hapus headNode yang lama 189 | delete hapusNode; 190 | 191 | cout << "Node berhasil dihapus" << endl << endl; 192 | } 193 | } 194 | void deleteFromEnd() 195 | { 196 | // jika node tinggal satu 197 | if (headNode == currentNode) 198 | { 199 | headNode = NULL; 200 | currentNode = NULL; 201 | return; 202 | } 203 | // deklarasi pointer bantu untuk menampung head node 204 | Node *bantu = headNode; 205 | 206 | // deklarasi pointer hapus untuk menampung current node 207 | Node *hapusNode = currentNode; 208 | // lakukan perulangan sebelum mencapai akhir node 209 | while (bantu->next != currentNode) 210 | { 211 | bantu = bantu->next; 212 | } 213 | currentNode = bantu; 214 | currentNode->next = NULL; 215 | delete hapusNode; 216 | cout << "Node berhasil dihapus" << endl << endl; 217 | } 218 | 219 | void deleteAll() 220 | { 221 | Node *bantu, *hapusNode; 222 | bantu = headNode; 223 | // lakukan perulangan sebelum mencapai akhir node 224 | while (bantu->next != currentNode) 225 | { 226 | hapusNode = bantu; 227 | bantu = bantu->next; 228 | delete hapusNode; 229 | } 230 | headNode = NULL; 231 | currentNode = NULL; 232 | cout << "Node berhasil dikosongkan" << endl << endl; 233 | } 234 | 235 | void printNode() 236 | { 237 | // deklarasi pointer awal node untuk menampung head node 238 | Node *awalNode = headNode; 239 | int i = 1; 240 | while (awalNode != NULL) 241 | { 242 | cout << "Data pada node #" << i << " = " << awalNode->data << endl; 243 | awalNode = awalNode->next; 244 | i++; 245 | } 246 | cout << endl; 247 | } 248 | -------------------------------------------------------------------------------- /Tutorial2/3.Multidimensional_array.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() 4 | { 5 | //Array multidimensi mirip seperti sistem tabel dimana element array pertama divisualisasikan sebagai baris 6 | //dan element array kedua divisualisasikan sebagai kolom 7 | 8 | //membuat array multidimensi 2 x 3 yang berisi data diri 9 | cout << "MultiDimensional String Array !\n"; 10 | string siswa[2][3]; 11 | siswa[0][0] = "Muhammad Rafly Indrawan"; 12 | siswa[0][1] = "Prodi Informatika"; 13 | siswa[0][2] = "18 Tahun"; 14 | siswa[1][0] = "John Doe"; 15 | siswa[1][1] = "Kehutanan"; 16 | siswa[1][2] = "19 Tahun"; 17 | //kita membuat looping for untuk akses setiap element di array, wajib nested for ya gaes 18 | int y; 19 | for (y = 0; y < 2; y++) 20 | { 21 | for (int x = 0; x < 3; x++) 22 | { 23 | cout << siswa[y][x] << endl; 24 | } 25 | cout << endl; 26 | } 27 | //disini kita membuat looping array juga, hanya saja ini berbentuk data integer yang dapat dioperasikan menggunakan operator aritmatika 28 | cout << "\nMultiDimensional Integer Array !\n"; 29 | int matrik[3][3] = {{3, 2, 1}, {3, 5, 3}, {1, 4, 2}}; 30 | int matriksTotal[3]={0,0,0}; 31 | //ini bentuk foreach dalam bahasa c++ 32 | for (auto &Luar : matrik) 33 | { 34 | for (auto &Dalam : Luar) 35 | { 36 | cout << Dalam; 37 | } 38 | cout << endl; 39 | } 40 | //disini saya contohkan kalkulasi dari tiap element di array menggunakan operator + 41 | cout << "\nKalkulasi Matriks ! \n"; 42 | for(int x=0;x<3;x++){ 43 | for(int y=0;y<3;y++){ 44 | matriksTotal[y] += matrik[x][y]; 45 | } 46 | } 47 | for(int x=0;x<3;x++){ 48 | cout< 2 | using namespace std; 3 | int main (){ 4 | //kita membuat variabel string biasa 5 | string nama="Rafly"; 6 | //dengan menggunakan & kita dapat memanggil alamat memori si variabel yang disimpan di memori 7 | //var PointerNama itu berisi memori address dari si var nama 8 | //kalau mau buat var yang berisi pointer jan lupa pake asterisk ya gaes (*) 9 | string* PointerNama = &nama; 10 | //output biasa 11 | cout< 2 | using namespace std; 3 | int main(){ 4 | //kita membuat variabel seperti biasa 5 | string prodi = "Informatika"; 6 | //kedua, kita membuat sebuah variabel yang berisi pointer dari si variabel prodi 7 | string* pointerProdi = &prodi; 8 | //kita output biasa 9 | cout< 2 | using namespace std; 3 | int main (){ 4 | //membuat sebuah variabel 5 | string mobil = "Mazda"; 6 | //disini kita membuat sebuah variabel yang berisi pointer dari variabel mobil 7 | string *PointerMobil = &mobil; 8 | //output biasa 9 | cout< 2 | using namespace std; 3 | //buat fungsi yang akan mengembalikan nilai bertipe string 4 | string KalimatSapa(); 5 | //fungsi yang hanya akan memberi output tanpa memberi nilai 6 | void Hallo(); 7 | int main(){ 8 | //panggil kedua fungsi tersebut 9 | cout< 2 | #include 3 | #include 4 | using namespace std; 5 | //bikin variabel string sama pointernya 6 | string kalimat,*pkalimat; 7 | //buat variabel yang menampung banyaknya karakter 8 | int banyak; 9 | //fungsi yang menerima str x dan menghitungnya menggunakan array 10 | int hitung(string x){ 11 | pkalimat=&x; 12 | banyak=pkalimat->length(); 13 | return banyak; 14 | } 15 | //fungsi utama 16 | int main(){ 17 | cout<<"Masukkan kalimat = "; 18 | getline(cin,kalimat); 19 | //panggil fungsi tadi 20 | cout<<"\nJumlah Karakter Yang Ada Adalah = "< 2 | #include 3 | using namespace std; 4 | //deklarasi variabelnyaaa sama pointernyaaa 5 | int loop,datas[100],*pdata,total; 6 | int main(){ 7 | //input berapa looping 8 | cout<<"Masukkan Jumlah Data = \n"; 9 | cin>>loop; 10 | //looping masukan data dan assignment 11 | for(int x=0;x