Tabung dengan ADT, Function, Search, Sorting
Program C++ untuk mencari Volume dan Luas Permukaan sebuah tabung dengan menggunakan ADT(Abstrak Data Type), Function, Void, Searching, Sorting.
Berikut Kodenya :
#include <iostream>
#include <cmath>
using namespace std;
#define _USE_MATH_DEFINES // Untuk mengakses konstanta matematika seperti PI
struct tabung
{
int indeks_asli; // Bidang baru untuk menyimpan indeks asli dari tabung
float tinggi;
float jari;
float luas_permukaan;
float volume;
};
void masukan();
void cariVolume(tabung tabung[], int x);
void cariLuasPermukaan(tabung tabung[], int x);
void cariTabung(tabung tabung[], int x);
int cariTabungKe_i(tabung tabung[], int x, int indeks);
void sorting_volume(tabung tabung[], int x);
void sorting_luas(tabung tabung[], int x);
void printArray_volume(tabung tabung[], int x);
void printArray_luas(tabung tabung[], int x);
int main()
{
masukan();
return 0;
}
void masukan()
{
tabung tabung[10];
int x;
char pilihan;
do
{
cout << "============================================== " << endl;
cout << " TABUNG " << endl;
cout << "============================================== " << endl;
cout << "Mencari Volume = 1 \nMencari Luas Permukaan = 2 \nCari Tabung = 3 \nKeluar = 4 " << endl;
cout << "Pilih Menu (1/2/3/4) : ";
cin >> pilihan;
switch (pilihan)
{
case '1':
cariVolume(tabung, x);
break;
case '2':
cariLuasPermukaan(tabung, x);
break;
case '3':
cariTabung(tabung, x);
break;
case '4':
cout << "Terima kasih, program selesai." << endl;
break;
default:
cout << "Masukan pilihan antara 1, 2, 3, atau 4" << endl;
break;
}
// Tahan sejenak sebelum kembali ke menu utama
if (pilihan >= '1' && pilihan <= '3')
{
cout << "Tekan Enter untuk kembali ke menu utama...";
cin.ignore();
cin.get();
}
} while (pilihan != '4');
}
void cariVolume(tabung tabung[], int x)
{
cout << "=======================================" << endl;
cout << " Volume Tabung " << endl;
cout << "=======================================" << endl;
cout << "Ada berapa banyak Tabung : ";
cin >> x;
for (int i = 0; i < x; i++)
{
tabung[i].indeks_asli = i;
cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
cin >> tabung[i].jari;
cout << "Masukan Tinggi tabung " << i + 1 << " : ";
cin >> tabung[i].tinggi;
tabung[i].volume = M_PI * (tabung[i].jari * tabung[i].jari) * tabung[i].tinggi;
}
sorting_volume(tabung, x);
printArray_volume(tabung, x);
}
void cariLuasPermukaan(tabung tabung[], int x)
{
cout << "=======================================" << endl;
cout << " Luas Permukaan Tabung " << endl;
cout << "=======================================" << endl;
cout << "Ada berapa banyak Tabung : ";
cin >> x;
for (int i = 0; i < x; i++)
{
tabung[i].indeks_asli = i;
cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
cin >> tabung[i].jari;
cout << "Masukan Tinggi tabung " << i + 1 << " : ";
cin >> tabung[i].tinggi;
tabung[i].luas_permukaan = 2 * M_PI * tabung[i].jari * (tabung[i].jari + tabung[i].tinggi);
}
sorting_luas(tabung, x);
printArray_luas(tabung, x);
}
void cariTabung(tabung tabung[], int x)
{
int nomor_tabung;
cout << "Masukkan nomor indeks tabung yang ingin dicari: ";
cin >> nomor_tabung;
int indeks_tabung = cariTabungKe_i(tabung, x, nomor_tabung);
if (indeks_tabung != -1)
{
// Tabung ditemukan
cout << "Tabung ke-" << nomor_tabung << " ditemukan pada indeks: " << indeks_tabung << endl;
cout << "Jari-jari: " << tabung[indeks_tabung].jari << endl;
cout << "Tinggi: " << tabung[indeks_tabung].tinggi << endl;
cout << "Volume: " << tabung[indeks_tabung].volume << " cm^3" << endl;
cout << "Luas Permukaan: " << tabung[indeks_tabung].luas_permukaan << " cm^2" << endl;
}
else
{
cout << "Tabung ke-" << nomor_tabung << " tidak ditemukan." << endl;
}
}
int cariTabungKe_i(tabung tabung[], int x, int indeks)
{
for (int i = 0; i < x; i++)
{
if (tabung[i].indeks_asli + 1 == indeks)
{
return i;
}
}
return -1; // Mengembalikan -1 jika tabung dengan indeks yang ditentukan tidak ditemukan
}
void sorting_volume(tabung tabung[], int x)
{
for (int i = 0; i < x - 1; i++)
{
for (int j = 0; j < x - i - 1; j++)
{
if (tabung[j].volume > tabung[j + 1].volume)
{
tabung temp = tabung[j];
tabung[j] = tabung[j + 1];
tabung[j + 1] = temp;
}
}
}
}
void sorting_luas(tabung tabung[], int x)
{
for (int i = 0; i < x - 1; i++)
{
for (int j = 0; j < x - i - 1; j++)
{
if (tabung[j].luas_permukaan > tabung[j + 1].luas_permukaan)
{
tabung temp = tabung[j];
tabung[j] = tabung[j + 1];
tabung[j + 1] = temp;
}
}
}
}
void printArray_volume(tabung tabung[], int x)
{
cout << "Urutan dari yang terkecil : " << endl;
for (int i = 0; i < x; i++)
{
cout << "Tabung " << tabung[i].indeks_asli + 1 << " : " << tabung[i].volume << " cm^3" << endl;
}
cout << endl;
}
void printArray_luas(tabung tabung[], int x)
{
cout << "Urutan dari yang terkecil : ";
for (int i = 0; i < x; i++)
{
cout << "Tabung " << tabung[i].indeks_asli + 1 << " : " << tabung[i].luas_permukaan << " cm^2";
if (i != x - 1)
cout << ", ";
}
cout << endl;
}
}
- Untuk Menu Utama
Untuk menu utama , disini menggunakan funtion masukan() :
void masukan()
{
tabung tabung[10];
int x;
char pilihan;
do
{
cout << "============================================== " << endl;
cout << " TABUNG " << endl;
cout << "============================================== " << endl;
cout << "Mencari Volume = 1 \nMencari Luas Permukaan = 2 \nCari Tabung = 3 \nKeluar = 4 " << endl;
cout << "Pilih Menu (1/2/3/4) : ";
cin >> pilihan;
switch (pilihan)
{
case '1':
cariVolume(tabung, x);
break;
case '2':
cariLuasPermukaan(tabung, x);
break;
case '3':
cariTabung(tabung, x);
break;
case '4':
cout << "Terima kasih, program selesai." << endl;
break;
default:
cout << "Masukan pilihan antara 1, 2, 3, atau 4" << endl;
break;
}
// Tahan sejenak sebelum kembali ke menu utama
if (pilihan >= '1' && pilihan <= '3')
{
cout << "Tekan Enter untuk kembali ke menu utama...";
cin.ignore();
cin.get();
}
} while (pilihan != '4');
}
}
- Mencari Volume
Untuk mencari volume tabung , disini menggunakan funtion cariVolume(tabung tabung[], int x)
void cariVolume(tabung tabung[], int x)
{
cout << "=======================================" << endl;
cout << " Volume Tabung " << endl;
cout << "=======================================" << endl;
cout << "Ada berapa banyak Tabung : ";
cin >> x;
for (int i = 0; i < x; i++)
{
tabung[i].indeks_asli = i;
cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
cin >> tabung[i].jari;
cout << "Masukan Tinggi tabung " << i + 1 << " : ";
cin >> tabung[i].tinggi;
tabung[i].volume = M_PI * (tabung[i].jari * tabung[i].jari) * tabung[i].tinggi;
}
sorting_volume(tabung, x);
printArray_volume(tabung, x);
}
- Mencari Luas permukaan
Untuk mencari luas tabung , disini menggunakan funtion void cariLuasPermukaan(tabung tabung[], int x)
void cariLuasPermukaan(tabung tabung[], int x)
{
cout << "=======================================" << endl;
cout << " Luas Permukaan Tabung " << endl;
cout << "=======================================" << endl;
cout << "Ada berapa banyak Tabung : ";
cin >> x;
for (int i = 0; i < x; i++)
{
tabung[i].indeks_asli = i;
cout << "Masukan Jari-Jari tabung " << i + 1 << " : ";
cin >> tabung[i].jari;
cout << "Masukan Tinggi tabung " << i + 1 << " : ";
cin >> tabung[i].tinggi;
tabung[i].luas_permukaan = 2 * M_PI * tabung[i].jari * (tabung[i].jari + tabung[i].tinggi);
}
sorting_luas(tabung, x);
printArray_luas(tabung, x);
}
- Mencari Tabung
Untuk mencari tabung yang berisi volume dan luas permukaan dari tabung berdasarkan index, disini menggunakan funtion void cariLuasPermukaan(tabung tabung[ ], int x) dan int cariTabungKe_i(tabung tabung[ ], int x, int indeks)
void cariTabung(tabung tabung[], int x)
{
int nomor_tabung;
cout << "Masukkan nomor indeks tabung yang ingin dicari: ";
cin >> nomor_tabung;
int indeks_tabung = cariTabungKe_i(tabung, x, nomor_tabung);
if (indeks_tabung != -1)
{
// Tabung ditemukan
cout << "Tabung ke-" << nomor_tabung << " ditemukan pada indeks: " << indeks_tabung << endl;
cout << "Jari-jari: " << tabung[indeks_tabung].jari << endl;
cout << "Tinggi: " << tabung[indeks_tabung].tinggi << endl;
cout << "Volume: " << tabung[indeks_tabung].volume << " cm^3" << endl;
cout << "Luas Permukaan: " << tabung[indeks_tabung].luas_permukaan << " cm^2" << endl;
}
else
{
cout << "Tabung ke-" << nomor_tabung << " tidak ditemukan." << endl;
}
}
int cariTabungKe_i(tabung tabung[], int x, int indeks)
{
for (int i = 0; i < x; i++)
{
if (tabung[i].indeks_asli + 1 == indeks)
{
return i;
}
}
return -1; // Mengembalikan -1 jika tabung dengan indeks yang ditentukan tidak ditemukan
}
- Sorting Tabung
Untuk mensorting tabung berdasarkan volume atau luas permukaan dengan index mengikuti urutan dari yang terkecil, disini menggunakan funtion void void sorting_volume(tabung tabung[ ], int x) atau void sorting_luas(tabung tabung[ ], int x)
void sorting_volume(tabung tabung[], int x) //sorting berdasarkan volume
{
for (int i = 0; i < x - 1; i++)
{
for (int j = 0; j < x - i - 1; j++)
{
if (tabung[j].volume > tabung[j + 1].volume)
{
tabung temp = tabung[j];
tabung[j] = tabung[j + 1];
tabung[j + 1] = temp;
}
}
}
}
void sorting_luas(tabung tabung[], int x) // sorting berdasarkan luas permukaan
{
for (int i = 0; i < x - 1; i++)
{
for (int j = 0; j < x - i - 1; j++)
{
if (tabung[j].luas_permukaan > tabung[j + 1].luas_permukaan)
{
tabung temp = tabung[j];
tabung[j] = tabung[j + 1];
tabung[j + 1] = temp;
}
}
}
}
- Menampilkan Hasil
Untuk menampilkan hasil operasi menghitung volume dan luas permukaan tabung, disini menggunakan funtion void printArray_volume(tabung tabung[ ], int x) atau void printArray_luas(tabung tabung[ ], int x)
void sorting_volume(tabung tabung[], int x) //sorting berdasarkan volume
{
for (int i = 0; i < x - 1; i++)
{
for (int j = 0; j < x - i - 1; j++)
{
if (tabung[j].volume > tabung[j + 1].volume)
{
tabung temp = tabung[j];
tabung[j] = tabung[j + 1];
tabung[j + 1] = temp;
}
}
}
}
void sorting_luas(tabung tabung[], int x) // sorting berdasarkan luas permukaan
{
for (int i = 0; i < x - 1; i++)
{
for (int j = 0; j < x - i - 1; j++)
{
if (tabung[j].luas_permukaan > tabung[j + 1].luas_permukaan)
{
tabung temp = tabung[j];
tabung[j] = tabung[j + 1];
tabung[j + 1] = temp;
}
}
}
}
Comments
Post a Comment