|
Soal 1 (keluarkan array level1). Peserta praktikum diminta untuk membuat sebuah program yang bisa mengeluarkan nilai array dimensi 1. User memasukkan bilangan berapapun yang dia mau, berapa kalipun user mau. Lalu saat user memasukkan bilangan 9999 program berhenti meminta masukan user, dan program menampilkan semua angka dari masukan user tersebut. Soal 2 (Keluarkan array level 2). Peserta praktikum diminta untuk membuat sebuah program yang bisa mengeluarkan nilai array dimensi 2. User memasukkan jumlah baris dan jumlah kolom, lalu memasukkan nilai-nilai dalam matriks tersebut, lalu program menampilkan angka-angka seperti masukan user dalam bentuk matriks.
Soal 3 (Max dan Min matrix). Peserta praktikum diminta untuk membuat sebuah program yang bisa mengeluarkan 2 nilai maksimal dan minimal dari matriks. User memasukkan jumlah baris dan jumlah kolom, lalu memasukkan nilai-nilai dalam matriks tersebut, lalu program menampilkan angka-angka seperti masukan user dalam bentuk matriks dan 2 nilai tertinggi dalam matriks tersebut dan 2 nilai terendah dalam matriks tersebut.
Jawaban :
SOAL 1 #include <iostream> #include <conio.h> using namespace std;
int main() { int a[100]; int counter=0; cout<<"masukkan isi array <berhenti sampai 100 atau memasukkan 9999: "; cin >>a[counter]; while((a[counter]!=9999) && (counter<100)) { counter++; cout<<"masukkan isi array <berhenti sampai 100 atau memasukkan 9999: "; cin >>a[counter]; }
for(int i=0;i<counter;i++){ cout<<a[i]<<" "; }
getch(); return 0; } alternatif soal no 1 SOAL 1 #include <iostream> #include <conio.h> using namespace std; int main() { int nilai[100]; int i=0; while (i<100) { cout <<"masukan isi array (berhenti sampai 100 atau 9999): "; cin>>nilai[i]; if (nilai[i]==9999) break; i++; } cout<<"keluaran\n"; for (int j=0; j<i; j++) { cout<<nilai[j]<<"\t"; } getch(); return 0; } dengan menggunakan break, atau continue, alur logika program yang sebenarnya jadi kurang terlihat. dengan memanfaatkan while () mungkin akan lebih terlihat alur logika programnya. SOAL 2 #include <iostream> #include <conio.h> using namespace std;
int main () { int n; cout<<"masukan tinggi segitiga: ";cin>>n; for (int i=1; i<=n; i++) { for (int j=1; j<=i; j++) cout<<"*"; cout<<endl; } getch(); return 0; } SOAL 3 pada contoh program yang diberikan tim pembuat soal jika nilai terbesar pertama dan kedua sama, maka tidak bisa tertangani. begitu juga jika nilai terkecil pertama dan kedua sama maka tidak tertangani juga. source code berdasarkan contoh program #include <iostream> #include <conio.h> using namespace std;
int main () { int n,m; int max1; int max2; int min1; int min2; cout<<"masukan nilai kolom :";cin>>n; cout<<"masukan nilai baris :";cin>>m; int matrix[m][n]; for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { cout<<"masukan isi matriks ["<<i+1<<"]["<<j+1<<"] : "; cin >>matrix[i][j]; } } //mencari nilai max1 max1 = matrix[0][0]; for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { if (matrix[i][j]>max1) max1=matrix[i][j]; } } //mencari nilai max 2 max2 = matrix[0][0]; for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { if (matrix[i][j]>max2 && matrix[i][j]!=max1) max2=matrix[i][j]; } } //mencari nilai min1 min1 = matrix[0][0]; for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { if (matrix[i][j]<min1) min1=matrix[i][j]; } } //mencari nilai min2 min2 = matrix[0][0]; for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { if (matrix[i][j]<min2 && matrix[i][j]!=min1) min2=matrix[i][j]; } } //menampilkan matriks cout<<"matrix :\n"; for (int i=0; i<m; i++) { for (int j=0; j<n; j++) { cout<<matrix[i][j]<<"\t"; } cout<<endl; } cout<<endl; cout<<"nilai terbesar 1:"<<max1<<endl; cout<<"nilai terbesar 2:"<<max2<<endl; cout<<"nilai terkecil 1:"<<min1<<endl; cout<<"nilai terkecil 2:"<<min2<<endl; getch(); return 0; } alternatif lainnya yang lebih baik' #include<iostream> #include<conio.h> using namespace std;
int main() { int columnSize, rowSize; int Min, previousMin, Max, previousMax;
cout<<"masukkan panjang baris matriks: "; cin>>rowSize; cout<<"masukkan panjang kolom matriks: "; cin>>columnSize; int Matriks[rowSize][columnSize];
//masukkan nilai PER BARIS // Matriks[1][2], BARIS PERTAMA KOLOM KEDUA for(int i=0;i<rowSize;i++){ for(int j=0;j<columnSize;j++){ cout<<"masukkan isi matriks["<<i<<"]["<<j<<"]: "; cin>>Matriks[i][j]; } }
//MENCARI NILAI MAKSIMUM Max=Matriks[0][0]; previousMax = Matriks[0][0]; for(int i=0;i<rowSize;i++){ for(int j=0;j<columnSize;j++){ if(Matriks[i][j]>=Max) { previousMax = Max; Max = Matriks[i][j]; }else if(Matriks[i][j]>=previousMax){//harus dicek lagi, ada kemungkinan Matriks[i][j] lebih besar dari previous Max walaupun lebih kecil dari Max previousMax = Matriks[i][j]; } } }
//MENCARI NILAI MINIMUM Min=Matriks[0][0]; previousMin = Matriks[0][0]; for(int i=0;i<rowSize;i++){ for(int j=0;j<columnSize;j++){ if(Matriks[i][j]<=Min) { previousMin = Min; Min = Matriks[i][j]; } else if(Matriks[i][j]<=previousMin){//harus dicek lagi, ada kemungkinan Matriks[i][j] lebih kecil dari previous Min walaupun lebih besar dari Min previousMin = Matriks[i][j]; } } }
//TAMPILKAN HASIL for(int i=0;i<rowSize;i++){ for(int j=0;j<columnSize;j++){ cout<<Matriks[i][j]<<"\t"; } cout<<"\n"; }
cout<<"\n nilai maksimum 1: "<<Max; cout<<"\n nilai maksimum 2: "<<previousMax; cout<<"\n nilai minimum 1 : "<<Min; cout<<"\n nilai minimum 2 : "<<previousMin;
getch(); return 0; } spesial credit untuk Pranoto Budi 13506098 atas koreksi alternatif jawabannya |
Comments