| Solusi Modul 3 FTTM B |
|
|
|
| Written by Administrator | ||||||||||||||||
| Sunday, 05 April 2009 06:31 | ||||||||||||||||
|
Ini solusi Praktikum ke-3 PTI FTTM Shift B yang dilaksanakan pada tanggal 30 Maret 2009, dan tentu saja versi saya lho... CMIIW
Soal 1 (Barisan bilangan kuadrat sempurna).
Buatlah sebuah program yang menerima masukan sebuah bilangan integer. Setelah itu, program akan menampilkan output seperti dibawah ini.
Contoh tampilan:
Masukan sebuah nilai : 4 1 4 9 16
Contoh tampilan 2:
Masukan sebuah nilai : 6 1 4 9 16 25 36
Jadi, peserta praktikum diminta untuk membuat barisan bilangan kuadrat.
Source codenya: /**************************** *Program Barisan Kuadrat * *by Pribadi Mumpuni Adhi * *http://nicedaysblue.web.id* ***************************/
#include <iostream> #include <conio.h> using namespace std; int main () { int i, j, k;
cout <<"masukkan sebuah nilai : ";cin>>j; cout <<"yg ini pake for loh...\n"; for (i=1 ; i<=j ; i++) { k = i*i; cout<<k<<" "; } cout <<"\n\n"; cout <<"kalo yg ini pake while dong...\n\n"; i = 1; while (i<=j) { k = i*i; cout<<k<<" "; i++; } //please don't remove the code below this line cout<<"\n\n\nplease visit http://nicedaysblue.web.id"; getch (); return 0; }
Penjelasan singkat Dalam source code di atas diberikan solusi pengerjaan baik menggunakan ‘for’ maupun ‘while’, secara prinsip penggunaannya sama saja, hanya syntax-nya yang berbeda. k=i*i berarti nilai k akan sama dengan i kuadrat dengan i mulai dari 1 sampai j
Soal 2 (Spinning N).
Buatlah sebuah program yang menerima masukan input sebuah nilai integer. Setelah itu, program akan menampilkan output seperti dibawah ini.
Contoh tampilan:
Masukan sebuah nilai : 4
Jadi, program akan menampilkan angka dari 1 sampai N (N adalah masukan user). Tetapi, penampilan barisannya bergantian dari kecil ke besar dan besar ke kecil.
Source codenya: /**************************** *Program Spinning N * *by Pribadi Mumpuni Adhi * *http://nicedaysblue.web.id* ***************************/ #include <iostream> #include <conio.h> using namespace std; int main () { int i, j, k; cout <<"masukan sebuah nilai : ";cin>>j;
for (i=1 ; i<=j; i++) { if (i%2==1)//untuk i=ganjil { for (k=j; k>0; k--) { cout<<k<<" "; } cout<<"\n"; } else //yang ini untuk i=genap { for (k=1; k<=j; k++) { cout<<k<<" "; } cout<<"\n"; } } //please don't remove the code below this line cout<<"\n\n\nplease visit http://nicedaysblue.web.id"; getch (); return 0; }
Penjelasan singkat sesuai dengan contoh tampilan di soal, kalau ganjil maka urutannya dari besar ke kecil kalau genap dari kecil ke besar... (yg gw tangkep sih itu bung!) so.. utk ganjil dilakukan decrement menggunakan: for (k=j; k>0; k--) { cout<<k<<" "; } nilai k yg pertama akan sama dgn input kita yaitu j, akan terus diulang sampe nilai k>0, dan nilai k akan terus berkurang 1. bila yg diinput j=4 yang tampil di layar adalah 4 3 2 1
untuk genap dilakukan increment, nilai k akan terus bertambah 1, hal ini akan terus diulang apabila k<=j, dengan j nilai input kita. for (k=1; k<=j; k++) { cout<<k<<" "; }
Soal bonus (Bilangan Masukan Minimum).
Buatlah sebuah program yang meminta input sebuah bilangan integer. Setelah itu, program akan melakukan perulangan sebanyak nilai bilangan tersebut. Proses yang dilakukan ketika melakukan perulangan tersebut adalah meminta masukan nilai yang ditampung dalam variabel. Setelah itu, program akan menghasilkan output berupa nilai terkecil yang dimasukkan oleh user tadi.
Contoh program :
Masukan sebuah nilai integer : 5
Masukan nilai 1 : 3
Masukan nilai 2 : 7
Masukan nilai 3 : 2
Masukan nilai 4 : 20
Masukan nilai 5 = 12
Nilai terkecil yang dimasukkan user = 2
Hint : Pada saat perulangan, gunakanlah hanya sebuah variabel (katakanlah variabel A) yang menampung masukan user. Variabel itu akan terus diisi ulang oleh perintah CIN >> . Artinya, setiap kali masukan user di perulangan, isi variabel ini selalu berubah sesuai dengan masukan user tersebut. Kemudian, gunakanlah variabel lain (katakanlah variabel B) yang akan membandingkan nilai dengan variabel A. Dan hasil akhir ada di variabel B tersebut.
Source codenya: /***************************** *Program Bil masukan minimum* *oleh Pribadi M. Adhi * *http://nicedaysblue.web.id * *****************************/
#include <iostream> #include <conio.h> using namespace std;
int main () { int bil, a, b, i; cout<<"Masukan sebuah nilai integer : ";cin>>bil; for (i=1; i<=bil; i++) { cout<<"Masukan nilai "<<i<<" : ";cin>>a; if (i==1) b=a+1; if (b>a) b=a; else continue; } //please don't remove the code below this line cout<<"Nilai terkecil yang dimasukkan user = "<<b; cout<<"\n\n\nplease visit http://nicedaysblue.web.id"; getch(); return 0; }
Penjelasan singkat Soal bonus ini bisa dibilang sangat mengerikan, karena agak-agak tricky, nyebelin memang. Gw baru ingat bahwa di modul 3 dibahas juga masalah ‘break’ dan ‘continue’. Setelah diuji coba (plus baca bukunya)ternyata yang mempan pake ‘continue’. Untuk penjelasan perbedaan break dan continue baca aja buku C++ atau modul praktikum 3.
Kuncinya ada pada blok statement di bawah ini if (i==1) b=a+1; Jadi pada saat i=1 nilai b akan selalu lebih besar dari nilai a.
if (b>a) b=a; else continue; Nilai masukan a yang pertama selalu disimpan sebagai nilai terkecil (sementara waktu saja). Saat input berikutnya bila nilai b masih lebih besar dari nilai a yg kedua maka nilai b akan menjadi nilai a. Namun bila nilai b lebih kecil dari a maka program tidak akan menyimpan nilai a sebagai b, di situlah bergunanya kata kunci continue. Sehingga hanya nilai a terkecil saja yang disimpan.
Hati-hati jangan sampai tertukar menjadi if (b<a) b=a; else continue; dijamin akan muncul sederetan angka yang aneh di layar kompi anda... Believe me!!!
|
||||||||||||||||
| Last Updated ( Wednesday, 08 April 2009 23:40 ) |






Comments