Anda di halaman 1dari 13

RUBRIK PENILAIAN

UJIAN TENGAH SEMESTER


KU1072/PENGENALAN TEKNOLOGI INFORMASI B
SEM. 1 2015/2016
Soal 1. Pilihan Jawaban dan Jawaban Singkat [Bobot : 20%]
Soal 1.a. Pilihan Jawaban (BOBOT : 10%)
DESKRIPSI PERSOALAN + JAWABAN
Petunjuk:
Beri lingkaran pada huruf pilihan yang benar dan beri tanda silang pada huruf untuk pilihan jawaban yang salah.
Contoh cara menjawab:
1. Dalam kamus suatu program kita dapat mendeklarasikan:
a. Variabel
b. Instruksi pengulangan
c. Instruksi input/output
d. Konstanta
Jawablah semua pertanyaan di bawah ini sesuai petunjuk di atas:
1. Manakah pernyataan yang benar?
a. Berpikir komputasional adalah proses berpikir yang melibatkan cara memformulasikan masalah dan solusinya
yang direpresentasikan dalam bentuk yang dapat diproses oleh komputer.
b. Salah satu teknik dalam berpikir komputasional adalah dekomposisi persoalan.
c. Abstraksi adalah kemampuan menyaring informasi yang tidak diperlukan dalam proses pemecahan masalah.
d. Pemrograman prosedural melibatkan pemecahan masalah dengan mengelompokkan objek-objek sejenis ke
dalam kelas.
2. Manakah pernyataan yang benar?
a. Variabel adalah suatu nama yang digunakan untuk menyimpan suatu nilai bertipe tertentu.
b. 3Orang adalah contoh nama variabel yang baik.
c. Himpunan nilai yang diperbolehkan untuk type data char adalah semua alfabet a s.d. z dan A s.d. Z
d. Perintah assignment dalam Bahasa C++ ditandai dengan operator =
3. Perhatikan potongan program C++ berikut:
int temp;
temp = 10;
if (temp <= 0) {
cout << "padat";
} else if (temp <= 100) {
cout << "cair";
} else {
cout << "gas";
}

4.

Manakah yang benar?


a.
temp adalah variabel
b.
Nilai yang dapat diisikan pada temp adalah
bilangan riil
Perhatikan potongan program C++ berikut:

c.
d.

Di layar tertulis cair


Di akhir potongan program, nilai temp = 10

c.
d.

i adalah sebuah konstanta


cout adalah perintah untuk membaca input dari

int i = -2;
do {
cout << i+1 << endl;
i = i + 4;
} while (i <= 8);

Manakah yang benar?


a.
Nilai i di akhir potongan program = 4
b.
Tercetak di layar:
-1
3
4

keyboard

Soal 1.b. Jawaban Singkat (BOBOT : 10%)


DESKRIPSI PERSOALAN + JAWABAN
Perhatikan kamus program C++ di bawah ini:
// KAMUS
const int persen = 60;
float GajiTotal, GajiPokok, Tunjangan, PotGaji;
int MID1, MID2;
int urutan;
char CC1, CC2;
string Message;
bool found;

Berikut ini adalah contoh ekspresi dalam notasi C++ untuk kamus di atas. Periksalah apakah ekspresi yang dituliskan
benar. Jika benar, tentukan type hasilnya. Jika salah, berikan komentar mengapa salah. Lihat contoh pada no. 1 dan 2.
No.

Ekspresi

1
2

urutan 1
Message * 4

Jawaban
Benar
Salah

CC1 || CC2

Salah

4
5

found && (urutan>100)


(persen ^ 2) + GajiTotal + MID1
* MID2
GajiPokok + Tunjangan - PotGaji

Benar
Salah

Benar

Type Hasil / Komentar


int
Message bertype string. Operasi * bukan operasi yang
tepat untuk variabel/data bertype string.
CC1 dan CC2 bertype char (character). Operasi || (or)
tidak tepat untuk variabel/data bertype char.
bool (boolean)
Notasi ^ tidak terdefinisi untuk konstanta/nilai persen
yang bertype int
int

Soal 2. Hasil Eksekusi Program [Bobot : 15%]


DESKRIPSI PERSOALAN + JAWABAN
Petunjuk Soal 2.a. s.d. Soal 2.d.
Tuliskan keluaran (apa yang tercetak di layar) dari program-program di bawah ini pada kotak kosong di samping kanan
program. Semua komentar program sengaja dihilangkan. Program-program di bawah ini sudah dipastikan lolos kompilasi.
No.
2.a.

2.b.

2.c.

Program

Keluaran

#include <iostream>
using namespace std;
int main () {
int a, b, c;
a = 123;
b = 70;
if (a % 10 >= 3) {
c = a;
a = b;
b = c;
if (a % 5 < 3) {
cout << a % 5 << " " << b <<
endl;
} else {
cout << a % 5 << " " << c <<
endl;
}
} else {
if (b % 10 == 0) {
cout << a << " " << b << endl;
} else {
cout << b << " " << a << endl;
}
}
return 0;
}
#include <iostream>
using namespace std;
int XYZ (int a);
int main () {
int i, count;
i = -5;
count = 0;
while (i <= 10) {
cout << i << endl;
if (XYZ(i) > 0) {
count = count + 2;
} else {
count = count + 1;
}
i = i + 2;
}
cout << count << endl;
return 0;
}
int XYZ (int a) {
return (a * a * a + 3 * a + 2);
}
#include <iostream>
using namespace std;
int main () {
int x, y;
bool found = false;
x = 119;
y = 2;
while (found == false) {
if (x % y == 0) {
found = true;
} else {
x = x - 1;
y = y + 2;
}
}
cout << x << " " << y << endl;

0 123

-5
-3
-1
1
3
5
7
9
13

112 16

No.

Program

Keluaran

return 0;

2.d.

}
#include <iostream>
using namespace std;
int main () {
int Tab[8] = {-3,50,105,101,0,90,105,-3};
int i, x, c;
i = 0;
x = Tab[i];
c = 0;
while (i < 8) {
if (x < Tab[i]) {
x = Tab[i];
c = 1;
} else if (x == Tab[i]) {
c = c + 1;
}
i = i + 1;
}
cout << x << " " << c << endl;
return 0;
}

105 2

Petunjuk Soal 2.e.


Diberikan kode program seperti di bawah ini. Program ini sudah dipastikan lolos kompilasi. Tuliskan keluaran jika N
diberikan nilai 10.
No.
2.e.

Program

Keluaran

#include <iostream>
using namespace std;
int main () {
int i;
int N;
cin >> N;
i = 1;
while (i <= N) {
if ((i % 2 == 0) || (i % 3 == 0)) {
cout << i << endl;
i = i + 1;
} else {
cout << i << endl;
i = i + 2;
}
}
return 0;
}

1
3
4
5
7
9
10

Soal 3. Program Kecil [Bobot : 15%]


DESKRIPSI PERSOALAN
Spektrum optik adalah spektrum yang kontinyu sehingga tidak ada batas yang jelas antara satu warna dengan warna yang
lainnya. Meskipun demikian, manusia dapat memberikan batas kira-kira untuk warna-warna spektrum yang berbedabeda. Tabel berikut memberikan range panjang gelombang dari suatu warna yang dilihat oleh mata manusia normal. Data
disesuaikan untuk kepentingan soal.
Warna
Ungu
Biru
Hijau
Kuning
Jingga
Merah

Panjang gelombang (dalam nm)


380 - 450
451 - 495
496 - 570
571 - 590
591 - 620
621 - 750

Buatlah flowchart dan kode program lengkap dalam C++ untuk sebuah program yang menerima masukan berupa
panjang gelombang dalam nm (bertipe integer) dan menuliskan ke layar warna sesuai dengan panjang gelombangnya
sesuai dengan deskripsi di atas. Jika masukan di luar range, dituliskan pesan kesalahan Warna tidak terdefinisi.

Contoh masukan dan keluaran:


Masukan Panjang Gelombang
Keluaran
495
Biru
250
Warna tidak terdefinisi
Tuliskan jawaban pada sisa halaman ini dan di halaman kosong baliknya. Jika masih kurang, gunakan halaman
kosong di balik halaman 3 atau 4 (jangan lupa menuliskan nomor soal dengan jelas).
ALTERNATIF SOLUSI
Flowchart
Program SpektrumOptik
// Menentukan warna berdasarkan masukan panjang gelombang
Kamus
int pg; // panjang gelombang dalam nm
Algoritma
Mulai

input(pg
)

output
(Ungu
)

pg>=380 && pg<=450

pg<380 || pg>750

pg

pg>=451 && pg>=495

pg>=621 && pg>=750


pg>=571 && pg>=590

output
(Biru)

pg>=591 && pg>=620

pg>=496 && pg>=570


output
(Hijau
)

output(Warna tidak
terdefinisi)

output
(Kuning)

Selesai

output
(Jingga)

output
(Merah
)

Kode Program C++


// Program SpektrumOptik
// Menentukan warna berdasarkan masukan panjang gelombang
#include <iostream>
using namespace std;
int main () {
// Kamus
int pg;
// Algoritma
cin >> pg;
if (pg >= 380 && pg <= 450) {
cout << "Ungu" << endl;
} else if (pg >= 451 && pg <= 495) {
cout << "Biru" << endl;
} else if (pg >= 496 && pg <= 570) {
cout << "Hijau" << endl;
} else if (pg >= 571 && pg <= 590) {
cout << "Kuning" << endl;
} else if (pg >= 591 && pg <= 620) {
cout << "Jingga" << endl;
} else if (pg >= 621 && pg <= 750) {
cout << "Merah" << endl;
} else { // pg<380 || pg>750
cout << "Warna tidak terdefinisi" << endl;
}
return 0;
}
Alternatif Solusi:
Bisa menambahkan variabel string untuk menampung warna dan kemudian isi variabel ini dituliskan ke layar.
Varian analisis kasus yang lain diperbolehkan, asal benar.
Format input/output bebas, kecuali yang dinyatakan secara eksplisit oleh soal.

Soal 4. Faktorial dan Nilai Mahasiswa [Bobot : 25%]


Soal 4.a. Fungsi Faktorial (BOBOT : 10%)
DESKRIPSI PERSOALAN + ALTERNATIF SOLUSI
Fungsi Faktorial mempunyai parameter input berupa sebuah integer lebih besar atau sama dengan nol, misalnya a, dan
menghasilkan nilai a faktorial (a!) yaitu:
! = ( 1) ( 2) 1
Berikut adalah contoh masukan (input) dan hasil dari fungsi tersebut.
Input (a)
4
5
6
1
0

Hasil Faktorial(a)
24
120
720
1
1

Keterangan
4!
5!
6!
1!
0!

=
=
=
=
=

4*3*2*1 = 24
5*4*3*2*1 = 120
6*5*4*3*2*1 = 720
1
1; kasus khusus

Lengkapilah fungsi Faktorial di bawah ini sesuai spesifikasi di atas. Perhitungan faktorial harus dilakukan dengan
menggunakan pengulangan, tidak dengan cara memanggil fungsi/prosedur lain, misalnya dari library.

int Faktorial ( int a )


// Tuliskan spesifikasi/penjelasan fungsi di bawah ini (dalam bentuk komentar)
// Menghasilkan faktorial a
// Prekondisi/asumsi : a >= 0
{ // KAMUS LOKAL
int i, fak;
// ALGORITMA -1
i = 1;
fak = 1;
while (i <= a) {
fak = fak * i;
i = i + 1; // atau i++;
} // i > a
return fak;
// ALGORITMA2
fak = 1;
if (a > 0) {
for (i = 1; i <= a; i++) {
fak = fak * i;
}
}
return fak;
}

Soal 4.b. Array of Nilai Mahasiswa (BOBOT : 15%)


DESKRIPSI PERSOALAN + ALTERNATIF SOLUSI
Dua buah array of bilangan integer, yaitu T1 dan T2, digunakan untuk menyimpan data nilai mahasiswa sebuah mata
kuliah: T1 (dengan nilai efektif Neff1) untuk menyimpan nilai semua mahasiswa (baik lulus maupun tidak) dan T2
(dengan nilai efektif Neff2) untuk menyimpan nilai mahasiswa yang lulus saja. T1 dan T2 selalu diisi dari indeks ke-0.
Jika Neff1 = 0, berarti T1 kosong; demikian pula jika Neff2 = 0, berarti T2 kosong.
Program mula-mula menerima masukan sejumlah nilai mahasiswa (asumsi nilai 0 s.d. 100) dan menyimpannya ke T1.
Selanjutnya, program membaca sebuah nilai batas nilai kelulusan, misalnya X (asumsikan 0 <= X <= 100), lalu
menuliskan ke layar ada berapa banyak nilai yang dinyatakan lulus, yaitu yang bernilai > X. Program juga akan menyalin
semua nilai di T1 yang lulus (bernilai > X) ke array T2. Di akhir program, dituliskan ulang daftar nilai yang lulus yang
disimpan di T2. Jika ternyata tidak ada yang lulus (T2 kosong), maka dituliskan Tidak ada yang lulus.
Untuk menghitung banyaknya nilai yang lebih besar dari X digunakan fungsi CountLebihBesar, sedangkan untuk
menyalin isi T1 ke T2, digunakan prosedur CopyNilai, dan untuk menuliskan isi array ke layar digunakan prosedur
PrintArray.
Contoh masukan dan keluaran program:
Input
T1
Neff1
X
Index
Nilai
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7

7
0
3
12
100
25
73
11
90
8
7
0
3
12
10
25
7
11

Output
Tertulis Di Layar

T2
Index

10

55

Banyaknya nilai yang lulus = 2


Daftar nilai yang lulus =
100
73
90

50

Banyaknya nilai yang lulus = 0


Tidak ada yang lulus

0
1
2

Neff2
Nilai
100
73
90

Tugas Anda: Buatlah kode implementasi dari fungsi CountLebihBesar, prosedur CopyNilai, dan prosedur
PrintArray serta melengkapi program utama dengan cara melengkapi program di bawah ini. Implementasi
fungsi/prosedur dituliskan di halaman kosong di balik hlm. 6, 7, atau 8 dengan menuliskan header/definisi fungsi/prosedur
dengan jelas (spesifikasi tidak perlu ditulis ulang). Baca instruksi yang dituliskan sebagai komentar dengan cermat.
//
//
//
//

Program NilaiMahasiswa
Menerima masukan daftar nilai mahasiswa suatu kuliah, menyimpannya dalam suatu array of
integer T1, membaca batas nilai lulus, menghitung berapa banyak nilai yang lulus, dan
menyimpan daftar nilai lulus dalam array of integer T2, serta menampilkan isinya

#include <iostream>
using namespace std;
// Konstanta
const int NMax = 100;
// Deklarasi Prosedur/Fungsi
int CountLebihBesar (int Tab[NMax], int Neff, int X);
// Menghasilkan nilai elemen Tab (dengan nilai efektif Neff) yang lebih besar dari X
void CopyNilai (int Tab1[NMax], int Neff1, int Tab2[NMax], int *Neff2, int X);
// Menyalin nilai elemen Tab1 (dengan nilai efektif Neff1) yang lebih besar dari X ke Tab2
// (dengan nilai efektif Neff2)
// I.S. Tab1 dan Neff1 terdefinisi. Tab1 mungkin kosong (Neff1 = 0).
// F.S. Tab2 dan Neff2 berisi nilai Tab1 yang lebih besar dari X. Jika tidak ada nilai yang
lebih
//
besar dari X, Tab2 kosong (Neff2 = 0).
void PrintArray (int Tab[NMax], int Neff);
// Mencetak semua elemen Tab berderet ke bawah (setiap elemen dipisahkan sebuah enter)
// I.S. Tab dan Neff terdefinisi. Tab mungkin kosong (Neff = 0).

// F.S. Jika Tab tidak kosong, semua elemen Tab tertulis berderet ke bawah dari elemen pada
// indeks terkecil. Jika Tab kosong, tidak menuliskan apa pun.
// Lihat contoh penulisan tabel T2 pada contoh.
// PROGRAM UTAMA
int main () {
// KAMUS
// Deklarasi array T1 dan T2, berikut nilai efektifnya
int T1[NMax]; int Neff1; // Neff1 adalah nilai efektif T1; Jika Neff1=0, berarti T1
kosong
int T2[NMax]; int Neff2; // Neff2 adalah nilai efektif T2; Jika Neff2=0, berarti T2
kosong
// Tuliskan di bawah ini: deklarasi variabel-variabel lain yang dibutuhkan
int i, X; // harus ada
int count; // tergantung implementasi di program utama
// ALGORITMA
// Membaca isi array T1 dari pengguna
// Masukan Neff1 diasumsikan benar yaitu 0 s.d. 100
cout << "Masukkan nilai efektif T1 [0..100] = "; cin >> Neff1;
cout << "Masukkan elemen T1 = " << endl;
for (i = 0; i < Neff1; i++) {
cin >> T1[i];
}
// Menerima masukan batas nilai kelulusan X
cout << "Masukkan batas kelulusan = ";
cin >> X;
// Tuliskan di bawah ini: Instruksi untuk menuliskan banyaknya nilai T1 yang lebih besar
// dari X dengan memanfaatkan fungsi CountLebihBesar
cout << "Banyaknya nilai yang lulus = ";
count = CountLebihBesar(T1,Neff1,X);
cout << count << endl;
// Alternatif: cout << CountLebihBesar(T1,Neff1,X) << endl;

// Tuliskan di bawah ini: Instruksi untuk menyalin nilai-nilai dalam T1 yang lebih besar
// dari X ke T2 dengan memanggil prosedur CopyNilai
CopyNilai(T1,Neff1,T2,&Neff2,X);
// Tuliskan di bawah ini: Instruksi untuk mencetak nilai-nilai dalam T2 dengan prosedur
// PrintArray jika T2 tidak kosong (Neff2>0). Jika T2 kosong, tuliskan "Tidak ada yang
// lulus"
if (Neff2 == 0) {
cout << "Tidak ada yang lulus" << endl;
} else { // T2 tidak kosong, Neff2 > 0
cout << "Daftar nilai yang lulus =" << endl;
PrintArray(T2,Neff2);
}
return 0;
}
// Tuliskan kode implementasi fungsi CountLebihBesar, prosedur CopyNilai, dan prosedur
PrintArray
// sesuai definisi di atas di halaman kosong di balik halaman 6, 7, atau 8. Jangan lupa
// menuliskan header/definisi fungsi/prosedur, tetapi spesifikasi tidak perlu dituliskan ulang.
int CountLebihBesar (int Tab[NMax], int Neff, int X) {
// Kamus Lokal
int i, count;
// Algoritma-1
count = 0;
i = 0;
while (i < Neff) {
if (Tab[i] > X) {
count++;

}
i++;
}
return count;
// Algoritma-2
count = 0;
if (Neff > 0) {
for (i = 0; i < Neff; i++) {
if (Tab[i] > X) {
count++;
}
}
}
return count;
}
void CopyNilai (int Tab1[NMax], int Neff1, int Tab2[NMax], int *Neff2, int X) {
// Kamus Lokal
int i, j;
// Algoritma-1
i = 0;
j = 0;
while (i < Neff1) {
if (Tab1[i]>X) {
Tab2[j] = Tab1[i];
j++;
}
i++;
} // i >= Neff1
*Neff2 = j;

// Algoritma-2
if (Neff1 > 0) {
j = 0;
for (i = 0; i < Neff1; i++) {
if (Tab1[i]>X) {
Tab2[j] = Tab1[i];
j++;
}
} // i >= Neff1
*Neff2 = j;
} else { // Neff1 = 0
*Neff2 = 0;
}
}
void PrintArray (int Tab[NMax], int Neff) {
// Kamus Lokal
int i;
// Algoritma-1
i = 0;
while (i < Neff) {
cout << Tab[i] << endl;
i++;
} // i >= Neff
// Algoritma-2
if (Neff > 0) {
for (i = 0; i < Neff; i++) {
cout << Tab[i] << endl;
}
}
}

Soal 5. Luas Area di Bawah Kurva [Bobot : 25%]


DESKRIPSI PERSOALAN
Menghitung luas area di bawah suatu kurva yang dibentuk dengan suatu fungsi dapat dilakukan menggunakan pendekatan
numerik. Pendekatan numerik akan memotong-motong area dengan interval tertentu, kemudian dihitung luas setiap
segmen area dengan menggunakan rumus trapesium secara berulang-ulang dan semua luas segmen dijumlahkan untuk
mendapatkan luas total area di bawah kurva.
Diketahui sebuah kurva yang dibentuk dengan fungsi: f(x)=x2+1 dengan ilustrasi seperti gambar di bawah ini. Untuk
menghitung luas trapesium suatu segmen di bawah kurva antara xkiri dengan xkanan dengan interval sebesar delta
digunakan rumus: _ = 0.5 (( ) + ( ))

Sebuah program melakukan beberapa hal berikut secara berturut-turut:


Menerima masukan rentang area di bawah kurva f(x)=x2+1 yang akan dihitung, yaitu nilai x paling kiri (x1) dan x
paling kanan (x2). Syarat: x1 < x2.
Menerima masukan interval untuk perhitungan suatu segmen area, misalnya delta. Syarat: delta > 0.
Periksa apakah masukan x1, x2, dan delta benar sesuai dengan syarat-syarat di atas. Jika sudah sesuai, lanjutkan
dengan langkah berikutnya. Jika tidak sesuai, diberikan pesan kesalahan: Masukan tidak tepat dan diulangi
pembacaan masukan x1, x2, dan delta sampai didapatkan masukan yang sesuai syarat.
Menghitung dan menampilkan luas area di bawah kurva dalam rentang antara x1 dan x2 dengan interval sebesar
delta. Mengingat delta mungkin tidak membagi habis rentang antara x1 s.d. x2, maka jika hal ini terjadi, dilakukan
pembulatan ke atas, yaitu luas segmen terakhir (segmen paling kanan) dihitung tetap dengan interval delta sehingga
x yang kanan pada segmen terakhir akan melebihi x2.
a.
b.

Buatlah flowchart untuk persoalan di atas (flowchart boleh tidak detil, yang penting menggambarkan penyelesaian
persoalan dengan jelas). Lengkapi flowchart dengan kamus dan penjelasan-penjelasan yang diperlukan.
Buatlah program untuk persoalan di atas dalam Bahasa C++. Program yang dibuat harus merupakan program
lengkap yang mengandung judul, spesifikasi, kamus, dan algoritma dan harus sesuai dengan flowchart.

Tuliskan jawaban pada sisa halaman ini dan di halaman kosong baliknya. Jika masih kurang, gunakan halaman
kosong di balik halaman 1 atau 2 (jangan lupa menuliskan nomor soal dengan jelas).

Soal 4.a. (BOBOT : 10%)


ALTERNATIF SOLUSI
Flowchart:
Program MencariLuas
// Menghitung luas di bawah kurva: x^2 + 1,
// berdasarkan rentang x1 dan x2, serta
// interval sebesar delta

Algoritma - General
Mulai

Kamus
float x1, x2, delta, luas;

input dan validasi


x1, x2, delta

// Kamus tambahan - jika algoritma detil


float t1, t2;
Menghitung nilai
luas berdasarkan
x1, x2, dan delta

output luas

Selesai

Algoritma Detail
Mulai

Input dan Validasi


input(x1,
x2, delta)

true

Perhitungan Luas

(x1>=x2)
||
(delta<=0
)

false

output(Masukan
tidak tepat)

luas = 0
t1 = x1; t2 = x1 + delta
input(x1,
x2, delta)
t2<=x
2

luas = luas + (0.5 * ((t1*t1 + 1) + (t2*t2 + 1)) * delta)

t1 = t2
t2 = t2 + delta

true
t2>
x2
false

luas = luas + (0.5 * ((t1*t1 + 1) + (t2*t2 + 1)) * delta)

output(luas)

Selesai

Catatan Alternatif Solusi:


Berdasarkan soal, jawaban mahasiswa OK jika berhasil membuat setidaknya flowchart yang bersifat general.
Flowchart general setidaknya harus mengandung proses input, pemrosesan penghitungan luas, dan output.
Berbagai alternatif solusi lain diperbolehkan, termasuk penggunaan fungsi/prosedur.
Format input/output bebas, kecuali yang dinyatakan secara eksplisit oleh soal.

Soal 1.b. (BOBOT : 15%)


ALTERNATIF SOLUSI
(Berdasarkan flowchart pada solusi soal 1.a.)
// Program MencariLuas
// Menghitung luas di bawah kurva: x^2 + 1,
// berdasarkan rentang x1 dan x2, serta interval sebesar delta
#include <iostream>
using namespace std;
int main () {
// Kamus
float x1, x2, delta, luas;
float t1, t2;
// Algoritma
// Input dan Validasi
cin >> x1;
cin >> x2;
cin >> delta;
while (x1 >= x2 || delta <= 0) {
cout << "Masukan tidak tepat" << endl;
cin >> x1;
cin >> x2;
cin >> delta;
} // x1 < x2 && delta < 0
// Perhitungan Luas
luas = 0;
t1 = x1;
t2 = x1 + delta;
while (t2 < x2) {
luas = luas + (0.5 * ((t1*t1 + 1) + (t2*t2 + 1)) * delta);
t1 = t2;
t2 = t2 + delta;
} // t2 >= x2
if (t2 > x2) {
luas = luas + (0.5 * ((t1*t1 + 1) + (t2*t2 + 1)) * delta);
}
// Output luas
cout << luas << endl;
return 0;
}

Catatan alternatif solusi:


Sebenarnya solusi di atas memiliki masalah kecil yang berasal dari presisi nilai floating point. Namun karena masalah
ini tidak didiskusikan di perkuliahan, maka tidak akan di-consider dalam penilaian. Lagipula untuk cukup banyak
persoalan solusi di atas sudah OK.

Anda mungkin juga menyukai