Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int first = -1;
- /* Fungsi push, menambahkan data pada index 0 */
- void push(int size, int input, string arr[])
- {
- int t;
- if (input > size-first)
- {
- cout << "Jumlah data yang ingin dimasukkan melebihi kapasitas stack." << endl;
- cin.ignore();
- return;
- }
- if (arr[0] == "") // ketika arrat masih kosong, buat ngawali nilai fisrt
- {
- cout << "Data ke-1: ";
- getline(cin >> ws, arr[0]);
- input--;
- first++;
- }
- if (first == 0) // ketika array masih berisi 1, masukkan data ke-2
- {
- arr[first + 1] = arr[first];
- cout << "Data ke-2: ";
- getline(cin >> ws, arr[0]);
- input--;
- first++;
- }
- t = first + 2;
- while (first != 0 && input > 0) // ketika array sudah berisi lebih dari 2, masukkan data ke-3 dst
- {
- arr [first + 1] = arr [first];
- first++;
- for (int i = 1; i < first; i++) // loop geser data ke kanan. misal: data ke-2 jadi data ke-3
- {
- arr[first-i] = arr[first-(i+1)];
- }
- cout << "Data ke-" << t << ": ";
- getline(cin >> ws, arr[0]); // bagian input data baru di index 0
- t++;
- input--;
- }
- cout << "Data berhasil dimasukkan." << endl;
- }
- /* Fungsi pop, mengembalikan data pada index 0 */
- string pop(string arr[])
- {
- string item;
- if (arr[0] == "")
- {
- return "Stack kosong.";
- }
- item = arr[0];
- if (first == 0) // ketika array berisi 1
- {
- arr[first--] = "";
- return "Data yang di-pop: " + item;
- }
- for (int i = 0; i < first; i++) // ketika array berisi lebih dari 1
- {
- arr[i] = arr[i + 1]; // geser data ke kiri. misal: data ke-3 jadi data ke-2
- }
- arr[first--] = ""; // kosongkan data paling kanan dan nilai first dikurangi 1
- return "Data yang di-pop: " + item;
- }
- /* Fungsi searchIndex, mencari data pada index tertentu */
- void searchIndex(int index, int size, string arr[])
- {
- if (index < 0 || index > size)
- {
- cout << "Index " << index << " tidak valid. Input antara 0 - " << size << endl;
- return;
- }
- if (arr[index] == "") // ketika data pada index yang dicari kosong
- {
- cout << "Data pada index ke-" << index << " tidak ada." << endl;
- }
- else // ketika data pada index yang dicari ada
- {
- cout << "Data pada index ke-" << index << " adalah: " << arr[index] << endl;
- }
- }
- /* Fungsi searchItem, mencari data pada array */
- void searchItem(string item, string arr[])
- {
- for (int i = 0; i <= first; i++)
- {
- if (arr[i] == item)
- {
- cout << "Data '" << item << "' ditemukan pada index ke-" << i << endl;
- return;
- }
- }
- cout << "Data '" << item << "' tidak ditemukan." << endl;
- }
- /* Fungsi printAll, menampilkan semua data dalam array */
- void printAll(int size, string arr[])
- {
- cout << "Jumlah data dalam Stack: " << first+1;
- if (first+1 == size)
- {
- cout << " (Stack penuh)" << endl;
- }
- else
- {
- if (arr[0] == "")
- {
- cout << " (Stack kosong)" << endl;
- return;
- }
- cout << " (Stack belum penuh dan bisa diisi " << size - (first+1) << " data lagi.)" << endl;
- }
- cout << "Data dalam Stack:" << endl;
- for (int i = 0; i <= first; i++)
- {
- if (i == 0)
- {
- cout << "|\t" << arr[i] << "\t| <<---- TOP" << endl
- << "----------------" << endl;
- }
- else
- {
- cout << "|\t" << arr[i] << "\t|" << endl
- << "----------------" << endl;
- }
- }
- }
- int main()
- {
- int input, idx, size;
- string item;
- char choice;
- system("cls");
- cout << "Nama: Fairuz Andriansyah\n"
- << "NIM : 225150307111015\n\n";
- cout << "Program Stack menggunakan Array\n"
- << "=====================================\n";
- cout << "Masukkan ukuran stack: ";
- cin >> size;
- string arr[size];
- menu:
- system("cls");
- cout << "Nama: Fairuz Andriansyah\n"
- << "NIM : 225150307111015\n\n";
- cout << "Program Stack menggunakan Array\n"
- << "=====================================\n";
- cout << "Ukuran stack: " << size << endl
- << "Jumlah data yang masih bisa dimasukkan: " << size - (first+1) << endl
- << endl;
- cout << "Menu:\n"
- << "1. Push Data\n"
- << "2. Pop Data\n"
- << "3. Search by Index\n"
- << "4. Search by Data\n"
- << "5. Print All Data\n"
- << "0. Exit\n"
- << "Pilihan Anda (1/2/.../0): ";
- cin >> choice;
- cout << endl;
- switch (choice)
- {
- case '1': // Push Data
- if (arr[size - 1] != "")
- {
- cout << "Stack penuh." << endl;
- cin.ignore();
- }
- else
- {
- cout << "Masukkan jumlah data yang ingin dimasukkan: ";
- cin >> input;
- push(size - 1, input, arr);
- }
- cout << "\nTekan Enter untuk kembali ke menu...";
- cin.get();
- goto menu;
- break;
- case '2': // Pop Data
- cout << pop(arr) << endl;
- cout << "\nTekan Enter untuk kembali ke menu...";
- cin.ignore();
- cin.get();
- goto menu;
- break;
- case '3': // Search by Index
- if (arr[0] == "")
- {
- cout << "Stack kosong." << endl;
- }
- else
- {
- cout << "Masukkan index yang ingin dicari: "; // input index (mulai dari 0)
- cin >> idx;
- searchIndex(idx, size - 1, arr);
- }
- cout << "\nTekan Enter untuk kembali ke menu...";
- cin.ignore();
- cin.get();
- goto menu;
- break;
- case '4': // Search by Item
- if (arr[0] == "")
- {
- cout << "Stack kosong." << endl;
- cin.ignore();
- }
- else
- {
- cout << "Masukkan data yang ingin dicari: "; // input item yang ingin dicari (string)
- getline(cin >> ws, item);
- searchItem(item, arr);
- }
- cout << "\nTekan Enter untuk kembali ke menu...";
- cin.get();
- goto menu;
- break;
- case '5': // Print All Data
- printAll(size, arr);
- cout << "\nTekan Enter untuk kembali ke menu...";
- cin.ignore();
- cin.get();
- goto menu;
- break;
- case '0': // Exit
- cout << "tks." << endl;
- break;
- default: // Invalid Input
- cout << "Pilihan tidak valid." << endl;
- cout << "Tekan Enter untuk kembali ke menu...";
- cin.ignore();
- cin.get();
- goto menu;
- break;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement