Pti B Itb 2015
Pti B Itb 2015
4.
c.
d.
c.
d.
int i = -2;
do {
cout << i+1 << endl;
i = i + 4;
} while (i <= 8);
keyboard
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
Benar
Salah
Benar
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
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
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.
input(pg
)
output
(Ungu
)
pg<380 || pg>750
pg
output
(Biru)
output(Warna tidak
terdefinisi)
output
(Kuning)
Selesai
output
(Jingga)
output
(Merah
)
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.
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
50
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;
}
}
}
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).
Algoritma - General
Mulai
Kamus
float x1, x2, delta, luas;
output luas
Selesai
Algoritma Detail
Mulai
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
t1 = t2
t2 = t2 + delta
true
t2>
x2
false
output(luas)
Selesai