Alhamdulillahi nahmaduhu wa nusholli wa nusallimu ‘alaa rasulihil kariim.
Setelah menuliskan tutorial mengenai deret bilangan genap ganjil, selanjutnya penulis akan memberikan tutorial yang hampir sama, yaitu bagaimana mengetahui dalam satu deret bilangan, bilangan mana saja yang habis dibagi oleh bilangan tertentu.
Misal, penulis punya sederet bilangan: 1 2 3 4 5 6 7 8 10
Habis dibagi 2: 2 4 6 8 10
Habis dibagi 3: 3 6 9
Habis di bagi 5: 5 10
Dan seterusnya.
Logika pemrogramannya adalah:
KAMUSi, bagi, banyak, jum : integer rata : realALGORITMAinput ( bagi )jum ← 0 banyak ← 0for i ← 1 to 10 doif (i mod bagi = 0) thenoutput ( i ) banyak ← banyak + 1 jum ← jum + iendifendfor rata ← jum / banyakoutput ( "Total Jumlah bilangan ada ", jum ) output ( "Rata-ratanya: ", rata )
Algoritma di atas memungkinkan kita untuk dapat mengetahui bilangan mana saja dalam sebuat deret yang habis dibagi oleh bilangan tertentu hanya sebatas satu kali periksa.
Sekarang bagaimana kalau kita ingin mencari tahu bahwa bilangan-bilangan dalam deret tersebut mana saja yang habis dibagi oleh bilangan-bilangan berapapun yang kita inginkan.
Misal, kita punya deret: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Yang habis dibagi 3: 3 6 9 12 15
Yang habis dibagi 3 dan 4: 12
Yang habis dibagi 2 dan 3: 6 12
Dan seterusnya.
Langsung saja penulis sajikan source code-nya.
Source Code JAVA.
import java.util.Scanner;
public class HabisDibagi2
{
public static void main( String[] args )
{
Scanner input = new Scanner( System.in );
int i,j=0,jum=0;
float rata=0;
int min,max,g;
int kali,k,l;
int m1,m2;
System.out.print( "Nilai awal: " );
min = input.nextInt();
System.out.print( "Nilai akhir: " );
max = input.nextInt();
while (max < min)
{
System.out.print( "Nilai max harus lebih besar dari nilai min.\n\nMasukkan angka akhir: " );
max = input.nextInt();
}
int[] larik = new int[max-min+1];
//Isi larik
k=min;
do{
larik[j] = k;
j++;
k++;
} while (k <= max);
System.out.print( "Dibagi berapa kali: " );
kali = input.nextInt();
k=1;
m1=0;
m2=j;
do{
System.out.printf( "Pembagi ke %d : ",k );
g = input.nextInt();
while (g > max)
{
System.out.printf( "Bilangan pembagi harus lebih kecil dari nilai max.\n\nPembagi ke %d : ",k );
g = input.nextInt();
}
j=0;
for (i=m1;i<m2;i++)
{
if (larik[i] % g == 0)
{
larik[j] = larik[i];
j=j+1;
}
}
k=k+1;
m1=0;
m2=j;
} while (k <= kali);
jum=0;
for (i=0;i<j;i++)
{
System.out.println(larik[i]);
jum=jum+larik[i];
}
rata = (float)jum/j;
System.out.printf("\nAda %d bilangan dengan total jumlah %d",j,jum);
System.out.printf("\nNilai rata-ratanya adalah %5.2f",rata);
}
}
Ini contoh gambar outputnya:
Source Code C++.
#include <iostream>
using namespace std;
typedef int* IntArrayPtr;
int main()
{
int i,j=0,jum=0;
float rata=0;
int min,max,g;
int kali,k,l;
int m1,m2;
cout << "Nilai awal: ";
cin >> min;
cout << "Nilai akhir: ";
cin >> max;
while (max < min)
{
cout << "Nilai max harus lebih besar dari nilai min.\n\nMasukkan angka akhir: ";
cin >> max;
}
// Menggunakan Array Dinamis (Pointer)
IntArrayPtr larik;
larik = new int[max-min+1];
//Isi larik
k=min;
do{
larik[j] = k;
j++;
k++;
} while (k <= max);
cout << "Dibagi berapa kali: ";
cin >> kali;
k=1;
m1=0;
m2=j;
do{
cout << "Pembagi ke " << k << " : ";
cin >> g;
while (g > max)
{
cout << "Bilangan pembagi harus lebih kecil dari nilai max.\n\nPembagi ke " << k << " : ";
cin >> g;
}
j=0;
for (i=m1;i<m2;i++)
{
if (larik[i] % g == 0)
{
larik[j] = larik[i];
j=j+1;
}
}
k=k+1;
m1=0;
m2=j;
} while (k <= kali);
cout << endl;
jum=0;
for (i=0;i<j;i++)
{
cout << larik[i] << "\t";
jum=jum+larik[i];
}
cout << endl;
rata = (float)jum/j;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout << "\nAda " << j << " bilangan dengan total jumlah " << jum;
cout << "\nNilai rata-ratanya adalah " << rata;
//Hapus array dari memory
delete [] larik;
return 0;
}
Selesai.
Silakan Anda kembangkan sendiri selanjutnya.
Mudah-mudahan Allah ta’ala beri manfaat baik dari tutorial ini. Amiin.
Popularity: 17% [?]
Assalammualaikum..
mau tanya…
klo source code C buat sandi RSA gmn??…
Wa’alaikumussalam,
http://cppgm.blogspot.com/2008/01/rsa-algorithm.html
http://www.di-mgt.com.au/rsa_alg.html
http://www.programmersheaven.com/download/48580/download.aspx
http://www.sourcecodesworld.com/source/show.asp?ScriptID=874
Blognya inspiratif , tapi aku gak ngerti yg kayak ginian .. numpang belajar aja ya mas, salam kenal ..
Thanks. Selamat Belajar.
salam kenal,,
bantu aq dong,,,,kak
mencari arround time oleh round robin
jika arround time=waktu eksekusi+waktu tunggu
hasil keluaran y,,
1->2->3->4->5
1->2->3->4->5
1->2->3->4->5
1->2->4->5
semakin kebawah semakin habis prosesnya karena menggunakan perulangan lalu dicari berapa kali proses dalam putaran tersebut,,
tolong bantu ea kak.. makacie,,,
Salam kenal juga,
Coba pelajari sumber di sini:
http://lass.cs.umass.edu/~shenoy/courses/fall01/labs/lab2_help.html
http://electrofriends.com/source-codes/software-programs/c/c-program-for-round-robin-cpu-scheduling-algorithm/
http://www.codeproject.com/KB/cpp/round_robin.aspx
makasie bnyak ya kaaak
waaaaa tugas quh kelar nie,,, hehe udah qu pelajari semua,,,
You’re welcome. Selamat belajar.