Struktur Dan Algoritma
Struktur Dan Algoritma
Dosen Pengampu :
Caesar Angga Perdana, S.kom. M.T
Disusun Oleh :
Dias Anugrah (202202110003)
Sistem Informasi
Universitas IPWIJA
2022
Nama : Dias Anugrah
NIM : 202202110003
Prodi : Sistem Informasi
UAS : Struktur data dan algoritma
1. C. String
2. E. Relas
3. A Boolean
4. B. Integer
5. E. r=12, s=21.
6. E. Homogen
7. C. Dua
8. C. Input nilai mahasiswa perkelas dan matakuliah
9. C. 20
10. D. 01B(H)
SOAL PRAKTIKUM
1. #include <iostream>
#include <vector>
using namespace std;
Hasil
2. #include <iostream>
#include <vector>
return true;
}
int main() {
vector<int> primes;
for (int i = 1; i <= 60; ++i) {
if (isPrime(i)) {
primes.push_back(i);
}
}
Hasil
3. #include <iostream>
#include <string>
int main() {
string nim;
cout << "Masukkan NIM anda: ";
cin >> nim;
int sum = 0;
for (char digit : nim) {
if (isdigit(digit)) {
int num = digit - '0';
sum += num;
}
}
cout << "Penjumlahan dari angka-angka dalam NIM (" << nim << ") adalah: " << sum << endl;
return 0;
}
Hasil
4. Belum
5. #include <iostream>
#include <string>
#include <vector>
struct Pegawai {
string nama;
int umur;
double gaji;
};
int main() {
vector<Pegawai> daftarPegawai;
daftarPegawai.push_back(pegawai);
}
double totalGaji = 0;
for (const Pegawai& pegawai : daftarPegawai) {
totalGaji += pegawai.gaji;
}
cout << "Rata-rata gaji dari " << daftarPegawai.size() << " pegawai adalah: " << rataRataGaji <<
endl;
return 0;
}
Hasil
6. #include <iostream>
#include <string>
#include <vector>
#include <unordered_map>
struct Buku {
string judul;
string penulis;
int tahun_terbit;
};
int main() {
vector<Buku> daftarBuku;
unordered_map<int, vector<Buku>> kelompokBuku;
int n;
cout << "Masukkan jumlah buku: ";
cin >> n;
for (int i = 0; i < n; ++i) {
Buku buku;
cout << "Masukkan data buku ke-" << (i + 1) << ":" << endl;
cin.ignore();
cout << "Judul: ";
getline(cin, buku.judul);
cout << "Penulis: ";
getline(cin, buku.penulis);
cout << "Tahun Terbit: ";
cin >> buku.tahun_terbit;
daftarBuku.push_back(buku);
kelompokBuku[buku.tahun_terbit].push_back(buku);
}
cout << "Tahun Terbit " << tahun_terbit << ":" << endl;
for (const Buku& buku : kelompok) {
cout << " Judul: " << buku.judul << ", Penulis: " << buku.penulis << endl;
}
}
return 0;
}
Hasil
7. #include <iostream>
struct PersegiPanjang {
double panjang;
double lebar;
double hitungLuas() {
return panjang * lebar;
}
double hitungKeliling() {
return 2 * (panjang + lebar);
}
};
int main() {
PersegiPanjang pp;
cout << "Luas persegi panjang: " << luas << endl;
cout << "Keliling persegi panjang: " << keliling << endl;
return 0;
}
Hasil
8. #include <iostream>
struct Waktu {
int jam;
int menit;
int detik;
};
return hasil;
}
int main() {
Waktu waktu1, waktu2;
return 0;
}
Hasil
9. #include <iostream>
int main() {
int size;
cout << "Masukkan " << size << " nilai integer: " << endl;
for (int i = 0; i < size; ++i) {
cin >> array[i];
}
delete[] array;
return 0;
}
Hasil
struct Node {
string merek;
Node* next;
if (head == nullptr) {
head = newNode;
} else {
Node* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
prev = current;
current = current->next;
}
cout << "Merek " << namaMerek << " tidak ditemukan dalam linked list." << endl;
}
int main() {
Node* head = nullptr;
tambahMerek(head, "Toyota");
tambahMerek(head, "Honda");
tambahMerek(head, "Suzuki");
tambahMerek(head, "Nissan");
tambahMerek(head, "Mitsubishi");
tampilkanDaftarMerek(head);
string merekDihapus;
cout << "\nMasukkan nama merek kendaraan beroda empat yang ingin dihapus: ";
cin >> merekDihapus;
hapusMerek(head, merekDihapus);
tampilkanDaftarMerek(head);
hapusLinkedList(head);
return 0;
}
Hasil
11. #include <iostream>
#include <string>
using namespace std;
struct Buku {
string penulis;
int tahun_terbit;
Buku* next;
};
void tampilkanMenu() {
cout << "================================================" << endl;
cout << "Nama : Dias Anugrah" << endl;
cout << "NIM : 202202110003" << endl;
cout << "================================================" << endl;
cout << "================================================" << endl;
cout << "======= TOKO BUKU WAWAN LANGIT SOLUSI ========" << endl;
cout << "================================================" << endl;
cout << "Pilih Menu:" << endl;
cout << "1. Insert Depan" << endl;
cout << "2. Insert Belakang" << endl;
cout << "3. Delete Depan" << endl;
cout << "4. Delete Belakang" << endl;
cout << "5. Tampilkan Data" << endl;
cout << "6. Clear" << endl;
cout << "7. Exit" << endl;
cout << "================================================" << endl;
}
if (head == nullptr) {
head = newBuku;
} else {
Buku* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newBuku;
}
}
int main() {
Buku* head = nullptr;
int pilihan;
string penulis;
int tahun_terbit;
do {
tampilkanMenu();
cout << "Pilih: ";
cin >> pilihan;
switch (pilihan) {
case 1:
cout << "Masukkan Penulis Buku: ";
cin.ignore();
getline(cin, penulis);
cout << "Masukkan Tahun Terbit Buku: ";
cin >> tahun_terbit;
insertDepan(head, penulis, tahun_terbit);
break;
case 2:
cout << "Masukkan Penulis Buku: ";
cin.ignore();
getline(cin, penulis);
cout << "Masukkan Tahun Terbit Buku: ";
cin >> tahun_terbit;
insertBelakang(head, penulis, tahun_terbit);
break;
case 3:
deleteDepan(head);
break;
case 4:
deleteBelakang(head);
break;
case 5:
tampilkanData(head);
break;
case 6:
clearData(head);
break;
case 7:
cout << "Terima kasih!" << endl;
break;
default:
cout << "Pilihan tidak valid." << endl;
}
return 0;
}
Hasil 1
Hasil 2
Hasil 3
Hasil 4
Hasil 5
Hasil 6
Hasil 7
struct Buku {
string penulis;
int tahun_terbit;
Buku* next;
};
void tampilkanMenu() {
cout << "================================================" << endl;
cout << "Nama : Dias Anugrah " << endl;
cout << "NIM : 202202110003" << endl;
cout << "================================================" << endl;
cout << "================================================" << endl;
cout << "======= TOKO BUKU WAWAN LANGIT SOLUSI ========" << endl;
cout << "================================================" << endl;
cout << "Pilih Menu:" << endl;
cout << "1. Insert Depan" << endl;
cout << "2. Insert Belakang" << endl;
cout << "3. Delete Depan" << endl;
cout << "4. Delete Belakang" << endl;
cout << "5. Tampilkan Data" << endl;
cout << "6. Clear" << endl;
cout << "7. Exit" << endl;
cout << "8. Insert Tengah" << endl;
cout << "9. Hapus Tengah" << endl;
cout << "10. Pindah ke Berikutnya/Sebelumnya" << endl;
cout << "================================================" << endl;
}
if (head == nullptr) {
head = newBuku;
} else {
Buku* temp = head;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newBuku;
}
}
if (posisi <= 0) {
newBuku->next = head;
head = newBuku;
} else {
Buku* temp = head;
int currentPos = 0;
while (temp != nullptr && currentPos < posisi - 1) {
temp = temp->next;
currentPos++;
}
if (temp != nullptr) {
newBuku->next = temp->next;
temp->next = newBuku;
} else {
insertBelakang(head, penulis, tahun_terbit);
}
}
}
int main() {
Buku* head = nullptr;
int pilihan;
string penulis;
int tahun_terbit;
do {
tampilkanMenu();
cout << "Pilih: ";
cin >> pilihan;
switch (pilihan) {
case 1:
cout << "Masukkan Penulis Buku: ";
cin.ignore();
getline(cin, penulis);
cout << "Masukkan Tahun Terbit Buku: ";
cin >> tahun_terbit;
insertDepan(head, penulis, tahun_terbit);
break;
case 2:
cout << "Masukkan Penulis Buku: ";
cin.ignore();
getline(cin, penulis);
cout << "Masukkan Tahun Terbit Buku: ";
cin >> tahun_terbit;
insertBelakang(head, penulis, tahun_terbit);
break;
case 3:
deleteDepan(head);
break;
case 4:
deleteBelakang(head);
break;
case 5:
tampilkanData(head);
break;
case 6:
clearData(head);
break;
case 7:
cout << "Terima kasih!" << endl;
break;
case 8:
cout << "Masukkan Penulis Buku: ";
cin.ignore();
getline(cin, penulis);
cout << "Masukkan Tahun Terbit Buku: ";
cin >> tahun_terbit;
int posisi;
cout << "Masukkan Posisi Tengah: ";
cin >> posisi;
insertTengah(head, posisi, penulis, tahun_terbit);
break;
case 9:
cout << "Masukkan Posisi Tengah yang akan dihapus: ";
cin >> posisi;
hapusTengah(head, posisi);
break;
case 10: {
int pindah;
cout << "Pindah ke berikutnya (1) atau sebelumnya (2)? ";
cin >> pindah;
Buku* current = (pindah == 1) ? pindahKeBerikutnya(head) : pindahKeSebelumnya(head,
head);
if (current != nullptr) {
cout << "Data Buku saat ini:" << endl;
cout << "Penulis: " << current->penulis << ", Tahun Terbit: " << current->tahun_terbit
<< endl;
} else {
cout << "Tidak ada data buku saat ini atau linked list kosong." << endl;
}
break;
}
default:
cout << "Pilihan tidak valid." << endl;
}
return 0;
}
Hasil 8
Hasil 9
Hasil 10
13. #include <iostream>
#include <string>
#include <stack>
if (isalnum(c)) {
postfix += c;
}
else if (c == '+' || c == '-' || c == '*' || c == '/') {
while (!opStack.empty() && getPriority(opStack.top()) >= getPriority(c)) {
postfix += opStack.top();
opStack.pop();
}
opStack.push(c);
}
else if (c == '(') {
opStack.push(c);
}
else if (c == ')') {
while (!opStack.empty() && opStack.top() != '(') {
postfix += opStack.top();
opStack.pop();
}
opStack.pop();
}
}
while (!opStack.empty()) {
postfix += opStack.top();
opStack.pop();
}
return postfix;
}
int main() {
string infix;
cout << "Masukkan ekspresi matematika dalam notasi infix: ";
getline(cin, infix);
return 0;
}
Hasil
if (isdigit(c)) {
operandStack.push(c - '0');
}
switch (c) {
case '+':
operandStack.push(operand1 + operand2);
break;
case '-':
operandStack.push(operand1 - operand2);
break;
case '*':
operandStack.push(operand1 * operand2);
break;
case '/':
operandStack.push(operand1 / operand2);
break;
}
}
}
return operandStack.top();
}
int main() {
string postfix;
cout << "Masukkan ekspresi matematika dalam notasi postfix: ";
getline(cin, postfix);
return 0;
}
Hasil
int main() {
queue<int> antrian;
antrian.push(10);
antrian.push(20);
antrian.push(30);
tampilkanElemen(antrian);
antrian.pop();
tampilkanElemen(antrian);
return 0;
}
Hasil
int main() {
queue<int> antrian1, antrian2;
int n1, n2;
return 0;
}
Hasil
struct Node {
int data;
Node* next;
public:
Queue() : front(nullptr), rear(nullptr) {}
if (rear == nullptr) {
front = rear = newNode;
} else {
rear->next = newNode;
rear = newNode;
}
}
void dequeue() {
if (front == nullptr) {
cout << "Antrian kosong." << endl;
return;
}
if (front == nullptr) {
rear = nullptr;
}
}
void display() {
if (front == nullptr) {
cout << "Antrian kosong." << endl;
return;
}
int main() {
Queue antrian;
antrian.enqueue(10);
antrian.enqueue(20);
antrian.enqueue(30);
antrian.display();
antrian.dequeue();
antrian.display();
return 0;
}
Hasil
18. BELUM
19. BELUM
#include <iostream>
using namespace std;
class TreeNode {
public:
char data;
TreeNode* left;
TreeNode* right;
TreeNode(char val) {
data = val;
left = nullptr;
right = nullptr;
}
};
return root;
}
int main() {
string inorder = "ABCDEILNOTU";
string postorder = "BADELOUTNIC";
return 0;
}
Hasil
Inourder = ABCDEILNOTU
#include <iostream>
using namespace std;
class TreeNode {
public:
char data;
TreeNode* left;
TreeNode* right;
TreeNode(char val) {
data = val;
left = nullptr;
right = nullptr;
}
};
return root;
}
int main() {
string inorder = "ABCDEILNOTU";
return 0;
}