Anda di halaman 1dari 17

1.

BIAYA TAKSI

MASALAH

Serang pengguna akan menggunakan jasa taksi untuk pergi ke suatu tempat. Pengguna butuh
mengetahui jumlah harga yang harus dibayar ketika sudah sampai di tujuan dengan jarak
tempuh tertentu dan tarif yang telah ditetapkan oleh si pengemudi.

ANALISIS

Untuk menyelesaikan masalah ini, diperlukan data jarak tempuh perjalanan beserta tarif yang
ditetapkan oleh taksi per jarak tempuh. Informasi mengenai jarak tempuh didapatkan dari input
pengguna dengan memasukkan nilai yang tertera pada odometer saat sebelum memulai
perjalanan dan saat sudah sampai di tempat tujuan. Dengan formula pengurangan nilai
odometer akhir dan awal. Biaya yang harus dibayar didapatkan melalui operasi perkalian dari
tarif yang telah ditetapkan yaitu sebesar $1.5 per mile dan jarak tempuh yang didapat dari
perhitungan sebelumnya.

DATA YANG DIBUTUHKAN

INPUT
Double odometerAwal /*nilai pada odometer sebelum perjalanan dimulai*/

double odometerAkhir /*nilai pada odometer taksi setelah sampai tujuan*/

OUTPUT
double biaya /*nominal yang harus dibayar oleh penumpang*/

ADDITIONAL
double jarakTempuh /*jarak tempuh taksi untuk mengantar penumpang*/

double tarif /*biaya per jarak yang ditempuh dalam satuan mile*/

DESAIN

ALGORITMA AWAL
1. Mendapatkan nilai yang tertera pada odometer sebelum perjalanan dimulai dari input
pengguna.
2. Mendapatkan nilai yang tertera pada odometer saat penumpang telah sampai tujuan dari
input pengguna..
3. Mencari jarak yang telah ditempuh taksi.
4. Mengetahui tarif taksi dalam satuan dolar per jarak tempuh dalam satuan mile.
5. Mendapatkan biaya yang harus dibayar oleh penumpang.

Programming Projects 1
REFINEMENT LANGKAH KE-3
3.1 Jarak yang ditempuh didapat dari hasil pengurangan nilai odometer akhir oleh nilai
odometer awal.
REFINEMENT LANGKAH KE-5
5.1 Biaya yang harus dibayar didapatkan melalui perkalian dari tarif taksi dan jarak tempuh.

IMPLEMENTASI

Statements scanf("%lf", &odometerAwal); dan scanf("%lf", &odometerAkhir);


berfungsi untuk menerima input data dari pengguna yang kemudian digunakan untuk
menentukan jarak tempuh.
Kemudian biaya = jarakTempuh * tarif; untuk mengetahui biaya yang harus dibayar oleh
penumpang/pengguna.

TESTING

Untuk menjalankan program ini, sebagai contoh bisa memasukkan nilai 78602.5 sebagai nilai
odometer sebelum perjalanan dimulai. Kemudian nilai 78622.7 ketika penumpang sudah
sampai tujuan. Lalu akan muncul output berupa biaya yang harus dibayar oleh penumpang
dalam satuan dolar.

Programming Projects 1
3. ESTIMASI TEMPERATUR FREEZER

MASALAH

Suatu ketika terjadi masalah listrik yang mengakibatkan beberapa peralatan listrik mati,
termasuk sebuah freezer. Pengguna ingin mengetahui besar estimasi temperatur beberapa jam
setelah freezer mati Menurut Persamaan tertentu.

ANALISIS

Untuk menyelesaikan masalah tersebut, diperlukan informasi lama waktu yang telah berlalu
sejak matinya freezer dalam jam dan menit. Data waktu dimasukkan oleh pengguna dengan
format jam dan menit secara berurutan, yang dipisahkan oleh sebuah whitespace tanpa
menuliskan satuan jam dan menit. Data tersebut kemudian disimpan dan diproses untuk diubah
ke dalam bentuk bilangan desimal melalui operasi aitmetika. Kemudian hasilnya akan
dimasukkan dalam formula yang sudah tertera. Penghitungan tersebut akan menghasilkan nilai
estimasi temperatur dalam satuan derajat celsius yang diminta oleh pengguna.

DATA YANG DIBUTUHKAN

INPUT
double waktuJam /*lamanya jam berlalu sejak freezer mati*/

double waktuMenit /*lamanya menit berlalu sejak freezer mati*/

OUTPUT
double estimasiTemperatur /*berisi formula yang tertera pada soal*/

ADDITIONAL
double menitKeJam /*konversi lama waktu bagian menit dari satuan
menit ke jam*/

double totalWaktu /*hasil menitKeJam ditambah lamanya bagian jam*/

DESAIN

ALGORITMA AWAL
1. Memberitahu pengguna untuk memasukkan lama waktu sejak freezer mati.
2. Menyimpan input pengguna dengan scanf.
3. Proses konversi bagian menit ke dalam satuan jam.
4. Mendapatkan rentang waktu sejak freezer mati.
5. Mendapatkan nilai estimasi temperatur beberapa jam setelah freezer mati.
6. Menampilkan hasil penghitungan nilai estimasi temperatur kepada pengguna.

Programming Projects 1
REFINEMENT LANGKAH KE-1
1.1 Format input pengguna adalah x y untuk mendapatkan nilai x jam y menit.
REFINEMENT LANGKAH KE-3
3.1 Konversi dilakukan dengan membagi nilai menit oleh 60.
REFINEMENT LANGKAH KE-4
4.1 Didapatkan dengan menjumlah bagian jam dan menit yang telah dikonversi sehingga
menjadi bentuk bilangan desimal dalam satuan jam.
REFINEMENT LANGKAH KE-5
5.2 Nilai waktu yang telah didapat dikuadratkan kemudian dikalikan 4.
5.3 Nilai waktu ditambahkan 2.
5.4 Hasil panghitungan dari 5.1 dibagi oleh hasil penghitungan 5.2.
5.5 Hasil penghitungan 5.3 dikurangi 20.

IMPLEMENTASI

Deklarasi beberapa variabel.


double waktuJam, waktuMenit, menitKeJam, totalWaktu, estimasiTemperatur;

Meminta pengguna untuk memasukkan informasi waktu sejak matinya freezer.


printf("Sudah berapa lama sejak terjadinya masalah listrik sehingga freezer
mati?");

Menyimpan data waktu yang telah dimasukkan pengguna.


scanf("%lf %lf", &waktuJam, &waktuMenit);

Konversi satuan waktu bagian menit, mengubah keseluruhan bagian waktu ke dalam bentuk
jam, dan menghitung estimasi temperatur.
menitKeJam = waktuMenit / 60;

totalWaktu = waktuJam + menitKeJam;

estimasiTemperatur = ((4*(totalWaktu*totalWaktu))/(totalWaktu + 2))-20;

Menampilkan hasil estimasi temperatur freezer kepada pengguna.


printf("Estimasi temperatur freezer setelah mati karena masalah listrik
selama %.1lf jam adalah sebesar %.2lf °C", totalWaktu, estimasiTemperatur);

TESTING

Untuk menjalankan program ini, sebagai contoh pengguna bisa memasukkan nilai 2 30 yang
berarti 2 jam 30 menit. Nilai waktu tersebut akan diubah ke dalam format jam. Setelah itu
disubstitusi ke dalam formula yang sudah tersedia. Hasil penghitungan tersebut kemudian akan
ditampilkan kepada pengguna dalam satuan celsius.

Programming Projects 1
5. INFUS CAIRAN OBAT

MASALAH

Beberapa rumah sakit menggunakan pompa yang terprogram untuk menyalurkan obat-obatan
dan cairan ke dalam saluran vena pasien dengan laju tertentu dalam milimeter per jam. Data
informasi tersebut akan dicetak pada label yang akan ditempel pada kantung-kantung obat dan
cairan agar dapat diketahui informasi yang diperlukan untuk pompa dapat mengalirkan obat
dan cairan. Hal tersebut dilakukan dengan cara program meminta pengguna untuk
memasukkan data volume obat dan cairan yang perlu dialirkan beserta waktu yang tersedia
untuk melakukannya dalam satuan menit.

ANALISIS

Masalah tersebut dapat diatasi dengan program meminta pengguna untuk memasukkan
informasi volume cairan obat yang harus disuntikkan dan rentang waktu yang tersedia untuk
melakukannya dalam satuan menit. Kemudian data mengenai volume cairan obat ditampilkan
kembali dalam satuan mililiter. Data rentang waktu yang tersedia digunakan untuk menghitung
kecepatan yang harus dicapai pompa penyalur agar cairan obat yang dialirkan sesuai dengan
dosis yang dibutuhkan. Perhitungannya dilakukan dengan mengubah waktu dalam satuan
menit ke satuan jam, lalu mengalikannya dengan nilai volume cairan obat. Hasil pemrosesan
kedua data tersebut kemudian ditampilkan kepada pengguna.

DATA YANG DIBUTUHKAN

INPUT
int volume /* data volume cairan obat yang harus diberikan kepada pasien*/

int menit /*waktu yang tersedia untuk penyaluran cairan obat (menit)*/

OUTPUT
int laju /*perhitungan kelajuan yang harus dicapai oleh pompa*/

DESAIN

ALGORITMA AWAL
1. Deklarasi variabel dengan tipe data int.
2. Meminta pengguna untuk memasukkan ukuran volume cairan obat dan menyimpannya
melalui scanf.
3. Meminta pengguna untuk memasukkan rentang waktu yang tersedia untuk melakukan
pengaliran cairan obat ke pasien dan menyimpannya melalui scanf.
4. Proses penghitungan kelajuan yang perlu dicapai oleh pompa.
5. Menampilkan nilai yang tersimpan dalam variabel volume dan laju kepada pengguna.

Programming Projects 1
REFINEMENT LANGKAH KE-1
1.1 Variabel volume digunakan untuk menerima input pengguna dan menampilkan ukuran
volume cairan obat yang perlu untuk dialirkan.
1.2 Variabel menit digunakan untuk menerima input pengguna berupa informasi waktu yang
tersedia bagi pompa untuk mengalirkan cairan obat ke pasien.
1.3 Variabel laju sebagai penghitungan untuk menentukan berapa kelajuan yang harus
dicapai oleh pompa agar dapat mengalirkan cairan obat dengan volume yang sesuai dan
dalam rentang waktu tersedia.
REFINEMENT LANGKAH KE-4
5.1 Melakukan pembagian 60 oleh nilai yang tersimpan dalam variabel menit.
5.2 Mengalikan hasil penghitungan 4.1 dengan nilai yang tersimpan dalam variabel volume.

IMPLEMENTASI

Deklarasi beberapa variabel.


int volume, menit, laju;

Memintas pengguna untuk memasukkan volume cairan obat.


printf("Berapa volume cairan obat yang harus disuntikkan (ml)?");

Menyimpan nilai input pengguna.


scanf(" %d", &volume);

Meminta pengguna untuk memasukkan banyak waktu yang tersedia untuk melakukan
penyuntikan cairan obat, kemudian menyimpannya melalui scanf.
printf("Berapa menit waktu yang tersedia untuk melakukan penyuntikan?");

scanf("%d", &menit);

Mencari nilai kelajuan yang harus dicapai oleh pompa.


laju = (60 / menit) * volume;

Menampilkan kepada pengguna, volume cairan obat dan kelajuan pompa dalam
mengalirakannya.
printf("Volume cairan obat yang harus disuntikkan: %d ml\n", volume);

printf("Laju penyuntikan: %d ml/jam", laju);

TESTING

Untuk menjalankan program, sebagai contoh pengguna bisa memasukkan nilai volume dan
waktu yang tersedia dalam satuan menit. Data volume cairan obat akan ditampilkan kembali,
sedangkan data lama waktu akan diproses untuk mendapatkan laju yang perlu dicapai oleh
pompa.

Programming Projects 1
7. ENERGI PANAS DALAM BTU

MASALAH

Diperlukan suatu program yang mampu menghitung berapa banyak panas yang tersalurkan ke
sebuah rumah dalam satuan BTU (British Thermal Units) berdasarkan banyaknya galon
minyak dan nilai efisiensi tungku pembakaran minyaknya. Diasumsikan bahwa 1 barel sama
dengan 42 galon dan memiliki energi sebesar 5,800,000 BTU.

ANALISIS

Masalah tersebut dapat diselesaikan dengan program meminta pengguna untuk memasukkan
informasi berapa banyak minyak yang akan dibakar dalam satuan galon dan efisiensi tungku
pembakarannya. Kemudian data banyaknya minyak akan diubah ke dalam satuan barel sesuai
dengan ketentuan konversi yang tertera. Untuk mengetahui jumlah energi panas yang diterima oleh
sebuah rumah dalam satuan BTU, dilakukan perkalian antara jumlah minyak yang dibakar dalam satuan
barel, energi panas per barel, dan efisiensi tungku pembakaran.

DATA YANG DIBUTUHKAN

INPUT
double gallon /*jumlah minyak dalam satuan galon*/

OUTPUT
double efficiency /*efisiensi tungku pembakaran*/

ADDITIONAL
double convertGallonToBarrel /*konversi satuan galon ke barel*/

DESAIN

ALGORITMA AWAL
1. Meminta pengguna untuk memasukkan ukuran banyaknya minyak yang akan dibakar dalam
satuan galon lalu menyimpannya melalui scanf.
2. Mengubah satuan ukuran minyak dari galon ke barel.
3. Deklarasi variabel efficiency yang akan digunakan untuk menyimpan nilai efisiensi
dari tungku pembakaran.
4. Meminta pengguna untuk memasukkan nilai efisiensi tungku pembakaran lalu
menyimpannya dalam efficiency melalui scanf.
5. Melakukan penghitungan untuk mencari nilai energi panas yang diterima oleh sebuah
rumah.

Programming Projects 1
6. Menampilkan nilai energi panas yang diterima oleh sebuah rumah dari pembakaran minyak
dalam satuan BTU kepada pengguna.
REFINEMENT LANGKAH KE-2
2.1 Konversi dilakukan dengan membagi nilai yang tersimpan dalam variabel galon oleh 42.
REFINEMENT LANGKAH KE-5
5.1 Untuk mendapatkan nilai persentase efisiensi tungku pembakaran, nilai yang tersimpan
dalam variabel efficiency dibagi 100.
5.2 Dilakukan operasi perkalian antara hasil perhitungan dari langkah ke-2, energi per barel
minyak dalam satuan BTU, dan hasil penghitungan dari 5.1.

IMPLEMENTASI

Meminta pengguna untuk memasukkan banyaknya minyak dalam satuan galon.


printf("Masukkan jumlah galon minyak untuk pembakaran\n");

Deklarasi variabel untuk menyimpan nilai banyaknya minyak dalam satuan galon.
double gallon;

Kemudian input pengguna disimpan dalam variabel yang telah dibuat.


scanf("%lf", &gallon);

Konversi ukuran minyak dari galon ke barel.


double convertGallonToBarrel = gallon / 42;

Deklarasi variabel untuk menyimpan nilai efisiensi tungku pembakaran.


double efficiency;

Meminta pengguna untuk memasukkan nilai efisiensi.


printf("Masukkan persentase efisiensi tungku pembakaran minyak\n");

Kemudian menyimpan nilai tersebut.


scanf("%lf", &efficiency);

Mencari nilai energi panas yang diterima oleh sebuah rumah.


double heatProduced = convertGallonToBarrel * 5800000 * (efficiency/100);

Menampilkan kepada pengguna, hasil penghitungan yang telah dilakukan.


printf("Besar energi panas yang diterima oleh sebuah rumah adalah %.2lf BTU",
heatProduced);

Programming Projects 1
TESTING

Untuk menjalankan program, sebagai contoh pengguna bisa memasukkan data banyaknya
galon minyak dan efisiensi tungku pembakaran. Kemudian satuan banyak minyak akan
dikonversi ke barel dan dihitung energi panas yang dihasilkan.

Programming Projects 1
9. PEMOTONGAN RUMPUT

MASALAH

Suatu program diperlukan untuk mengambil input data dari pengguna yang berupa ukuran
panjang dan lebar lahan lokasi rumah beserta ukuran panjang dan lebar rumah yang berada di
lahan tersebut. Berdasarkan data tersebut, pengguna ingin mengetahui berapa waktu yang
diperlukan untuk memotong rumput dengan laju pemotongan tertentu.

ANALISIS

Masalah itu dapat diselesaikan dengan program yang pertama-tama meminta pengguna untuk
memasukkan informasi ukuran panjang dan lebar, baik rumah maupun lahan di mana rumah
itu berada. Setelah data tersebut didapatkan, dilakukan operasi perkalian untuk mencari ukuran
luas baik rumah maupun lahannya, secara terpisah. Dengan kedua data dari hasil perkalian
tersebut, dilakukan operasi pengurangan ukuran luas lahan oleh luas rumah untuk mendapatkan
luas lahan dengan rumput yang perlu dipotong. Selanjutnya, dilakukan operasi pembagian
ukuran luas lahan berumput oleh laju pemotongan rumput untuk mendapatkan lama waktu
yang dibutuhkan. Data waktu pemotongan rumput yang dibutuhkan dan bisa ditampilkan
kepada pengguna.
Karena output program dinyatakan dalam satuan detik, maka untuk readability bagi pembaca
jika lahan rumput yang akan dilakukan pemotongan memiliki nilai yang sangat besar, lebih
baik untuk membaginya dalam satuan jam dan menit menggunakan if else statement.

DATA YANG DIBUTUHKAN

INPUT
double panjangHalaman /*ukuran panjang lahan tempat rumah berada*/

double lebarHalaman /*ukuran lebar lahan tempat rumah berada*/

double panjangRumah /*ukuran panjang rumah*/

double lebarRumah /*ukuran panjang rumah*/

OUTPUT
double timeInSeconds /*mencari nilai lama waktu pemotongan rumput*/

DESAIN

ALGORITMA AWAL
1. Deklarasi beberapa variabel.

Programming Projects 1
2. Meminta pengguna untuk memasukkan ukuran panjang lahan tempat rumah berada lalu
menyimpannya melalui scanf.
3. Meminta pengguna untuk memasukkan ukuran lebar lahan tempat rumah berada lalu
menyimpannya melalui scanf.
4. Meminta pengguna untuk memasukkan ukuran panjang rumah lalu menyimpannya
melalui scanf.
5. Meminta pengguna untuk memasukkan ukuran lebar rumah lalu menyimpannya melalui
scanf.
6. Menghitung ukuran luas lahan di mana rumah berada.
7. Menghitung ukuran luas rumah.
8. Mencari luas lahan yang akan dipotong rumputnya.
9. Mendapatkan nilai lama waktu yang digunakan untuk memotong rumput.
10. Konversi tipe data informasi waktu pemotongan rumput dari double ke int.
11. Menampilkan waktu pemotongan rumput kepada pengguna.
REFINEMENT LANGKAH KE-1
11.1Variabel yang digunakan untuk menyimpan ukuran panjang dan lebar dari lahan tempat
rumah berada beserta ukuran panjang dan lebar rumahnya, masing-masing secara
berurutan adalah panjangHalaman, lebarHalaman, panjangRumah, lebarRumah.
11.2Variabel yang menyimpan nilai kelajuan memotong rumput yang telah ditentukan, yaitu 2
ft2/s.
REFINEMENT LANGKAH KE-6
6.1 Mengalikan nilai yang tersimpan dalam variabel panjangHalaman dan lebarHalaman.
REFINEMENT LANGKAH KE-7
7.1 Mengalikan nilai yang tersimpan dalam variabel panjangRumah dan lebarRumah.
REFINEMENT LANGKAH KE-8
8.1 Mengurangkan hasil penghitungan langkah ke-6 oleh langkah ke-7.
REFINEMENT LANGKAH KE-9
9.1 Pembagian dari hasil penghitungan langkah ke-8 oleh laju pemotongan rumput, yaitu 2.
REFINEMENT LANGKAH KE-11
11.1 Menggunakan if else statements dengan 3 kondisi untuk menampilkan output data waktu
yang terlalu besar untuk dinyatakan dalam satuan detik.
11.2 Kondisi 1: ketika waktu pemotongan kurang dari 60 detik maka cukup dinyatakan dalam
detik.
11.3 Kondisi 2: ketika waktu pemotongan lebih atau sama dengan 60 detik dan kurang dari 1
jam, maka dapat dinyatakan dengan format x menit y detik.
11.4 Kondisi 3: ketika waktu pemotongan lebih dari atau sama dengan 1 jam, maka dapat
dinyatakan dengan format x jam y menit z detik.

Programming Projects 1
IMPLEMENTASI

Deklarasi beberapa variabel.


double panjangHalaman, lebarHalaman, panjangRumah, lebarRumah, laju = 2;

Meminta pengguna memasukkan beberapa data terkait ukuran halaman dan rumah.
printf("Berapa ukuran panjang seluruh lahan rumah Anda?");

scanf("%lf", &panjangHalaman);

printf("Berapa ukuran lebar seluruh lahan rumah Anda?");

scanf("%lf", &lebarHalaman);

printf("Berapa ukuran panjang rumah Anda?");

scanf("%lf", &panjangRumah);

printf("Berapa ukuran lebar rumah Anda?");

scanf("%lf", &lebarRumah);

Penghitungan untuk menemukan lama waktu pemotongan rumput.


double luasRumah = panjangRumah * lebarRumah;

double luasHalaman = panjangHalaman * lebarHalaman;

double luasRumput = luasHalaman - luasRumah;

double waktuMemotong = luasRumput / laju;

int timeInSeconds = (int)waktuMemotong;

Proses mengubah format output waktu jika nilainya terlalu besar untuk dinyatakan dalam
satuan detik.
if (timeInSeconds < 60) {

printf("Waktu yang dibutuhkan untuk memotong rumput di halaman adalah


%d detik\n", timeInSeconds);}

else if (timeInSeconds >= 60 && timeInSeconds < 3600) {

int m1 = timeInSeconds / 60;

int s1 = timeInSeconds % 60;

printf("Waktu yang dibutuhkan untuk memotong rumput di halaman adalah


%d menit %d detik\n", m1, s1);}

else if (timeInSeconds >= 3600) {

int h2 = (timeInSeconds/3600);

int m2 = (timeInSeconds -(3600*h2))/60;

int s2 = (timeInSeconds -(3600*h2)-(m2*60));

printf("Waktu yang dibutuhkan untuk memotong rumput di halaman adalah


%d jam %d menit %d detik\n", h2, m2, s2);}

Programming Projects 1
TESTING

Untuk menjalankan program, sebagai contoh pengguna bisa memasukkan data ukuran rumah
dan halaman yang kemudian akan diproses menghasilkan ukuran luas. Selisih luas halaman
dan rumah adalah luas rumput yang perlu dipotong. Nilai selisih itu yang dibagi dengan laju
pemotongan adalah data waktu yang dibutuhkan pengguna.

Programming Projects 1
11. TRIPLE PYTHAGORAS

MASALAH

Diperlukan suatu program yang mengambil input data dari pengguna berupa 2 bilangan, yang
kemudian akan diproses untuk dapat menghasilkan 3 bilangan yang merupakan Triple
Pythagoras berdasarkan 2 bilangan awal.

ANALISIS

Masalah tersebut dapat terselesaikan dengan menggunakan program yang pada awalnya
meminta pengguna untuk memasukkan dua bilangan. Kemudian masing-masing dari bilangan
tersebut dikuadratkan dan dijumlah. Setelah itu, hasil penjumlahannya dicari nilai akar
kuadratnya. Maka telah didapatkan bilangan ketiga dari triple pythagoras yang dicari oleh
pengguna. Selanjutnya dapat ditampilkan ketiga bilangan tersebut kepada pengguna.

DATA YANG DIBUTUHKAN

INPUT
int m /*bilangan yang dimasukkan oleh pengguna*/

int n /*bilangan lain yang dimasukkan oleh pengguna*/

OUTPUT
double hipotenusa /*operasi penghitungan akar kuadrat dan menampilkan salah
satu bilangan triple pythagoras yang dicari*/

int m /*menampilkan kembali bilangan yang dimasukkan oleh


pengguna*/

int n /*menampilkan Kembali 2 bilangan lain yang dimasukkan oleh


pengguna*/

ADDITIONAL
int perhitungan /*proses perhitungan mencari nilai hipotenusa dari suatu
segitiga*/

DESAIN

ALGORITMA AWAL
1. Menggunakan standard library math.h karena akan memerlukan peran dari sqrt().
2. Deklarasi variabel untuk menyimpan nilai 2 bilangan dari input pengguna.
3. Meminta pengguna untuk memasukkan 2 bilangan yang akan dicari nilai triple pythagoras
angka lain yang belum ditemukan lalu menyimpannya melalui scanf.

Programming Projects 1
4. Penghitungan untuk menemukan angka yang lain.
5. Menampilkan ketiga angka tersebut kepada pengguna.
REFINEMENT LANGKAH KE-3
3.1 Misalkan kedua bilangan yang dimasukkan oleh pengguna adalah m dan n.
3.2 Masing-masing bilangan dikuadratkan kemudian dijumlahkan.
3.3 Mencari nilai akar dari hasil 3.2 menggunakan sqrt().

IMPLEMENTASI

Deklarasi beberapa variabel.


int m, n;

Meminta pengguna untuk memasukkan dua bilangan, kemudian menyimpannya.


printf("Silakan masukkan dua bilangan ");

scanf("%d %d", &m, &n);

Proses penghitungan untuk memperoleh nilai hipotenusa.


int perhitungan = (m * m) + (n * n);

double hipotenusa = sqrt(perhitungan);

Menampilkan kepada pengguna, ketiga bilangan triple pythagoras.


printf("Triple pythagoras dari kedua bilangan tersebut adalah %d %d %.2lf",
m, n, hipotenusa);

TESTING

Untuk menjankan program ini, sebagai contoh pengguna bisa memasukkan nilai 4 dan 3.
Rumus yang ada dalam program akan dapat menemukan pasangan bilangan triple pythagoras
lainnya dan pada akhirnya menampilkan ketiganya kepada pengguna yaitu, 3, 4, dan 5.

Programming Projects 1
13. JUMLAH SESI DAN SISA SISWA

MASALAH

Diperlukan suatu program yang dapat memberikan informasi berapa banyak sesi yang
terbentuk dan berapa banyak siswa yang tersisa (tidak memperoleh sesi) berdasarkan input data
yang berupa banyaknya keseluruhan siswa yang terdaftar, jika setiap sesinya terdapat 30 siswa.

ANALISIS

Untuk menyelesaikan masalah tersebut, pertama-tama program akan meminta pengguna untuk
memasukkan jumlah siswa yang terdaftar. Selanjutnya data tersebut akan dibagi jumlah siswa
per sesi sesuai dengan ketetapan, yaitu 30 siswa. Tipe data yang digunakan adalah integer
untuk mendapatkan hasil tanpa nilai desimal. Kemudian untuk menentukan jumlah sisa siswa
yang tidak memiliki sesi dilakukan dengan menggunakan operator modulo. Maka sudah
didapatkan kedua data yang dibutuhkan oleh pengguna, yaitu jumlah sesi dan jumlah sisa siswa
yang tidak memiliki sesi. Siap ditampilkan kepada pengguna.

DATA YANG DIBUTUHKAN

INPUT
int jumlahSiswa /*menerima data jumlah siswa dari input pengguna*/

OUTPUT
int jumlahSesi /*menampilkan jumlah sesi yang terbentuk setelah operasi
pembagian*/

int sisaSiswa /*menampilkan jumlah sisa siswa yang tidak mendapat sesi
setelah dilakukan penghitungan oleh operator modulo*/

DESAIN
ALGORITMA AWAL
1. Deklarasi variabel yang akan digunakan untuk menyimpan input pengguna berupa jumlah
siswa.
2. Meminta pengguna untuk memasukkan nilai jumlah siswa, lalu menyimpannya melalui
scanf.
3. Menentukan jumlah sesi.
4. Menentukan jumlah sisa siswa yang tidak mendapat sesi.
5. Menampilkan jumlah sesi dan jumlah sisa siswa yang tidak mendapat sesi kepada
pengguna.

Programming Projects 1
REFINEMENT LANGKAH KE-3
3.1 Membagi nilai jumlah siswa oleh jumlah siswa per sesi, yaitu 30.
REFINEMENT LANGKAH KE-4
4.1 Menggunakan operator modulo untuk mencari sisa pembagian jumlah siswa oleh 30.

IMPLEMENTASI

Deklarasi variabel.
int jumlahSiswa;

Meminta pengguna untuk memasukkan jumlah siswa terdaftar, lalu menyimpannya.


printf("Masukkan jumlah siswa yang terdaftar ");

scanf("%d", &jumlahSiswa);

Proses penghitungan untuk menemukan jumlah sesi yang terbentuk dan sisa siswa yang tidak
mendapatkan sesi.
int jumlahSesi = jumlahSiswa / 30;

int sisaSiswa = jumlahSiswa % 30;

Menampilkan kepada pengguna, hasil kedua penghitungan tersebut.


printf("Jumlah sesi yang terbentuk: %d\n", jumlahSesi);

printf("Jumlah siswa yang tersisa: %d", sisaSiswa);

TESTING

Untuk menjalankan program, sebagai contoh pengguna dapat memasukkan jumlah siswa
terdaftar sebesar 320 orang. Maka data akan diproses dengan operator pembagian
menghasilkan sesi yang terbentuk sebanyak 10 sesi. Dan sisa siswa yang tidak mendapatkan
sesi sebanyak 20 orang siswa.

Programming Projects 1

Anda mungkin juga menyukai