22 Jun 2009 @ 11:08 

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:

KAMUS
   i, bagi, banyak, jum : integer
   rata : real
   input ( bagi )
   jum ← 0
   banyak ← 0
   for i ← 1 to 10 do
      if (i mod bagi = 0) then
          output ( i )
          banyak ← banyak + 1
          jum ← jum + i
      endif
   endfor

   rata ← jum / banyak
   output ( "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 .

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 ++.

#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.

Posted By: Galih Hermawan
Last Edit: 24 Jun 2009 @ 09:00

EmailPermalink
Tags


 

Responses to this post » (12 Total)

 
  1. Dimas says:

    Assalammualaikum..

    mau tanya…
    klo source code C buat sandi RSA gmn??…

  2. nama keren says:

    Blognya inspiratif , tapi aku gak ngerti yg kayak ginian .. numpang belajar aja ya mas, salam kenal ..

  3. alvi says:

    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,,,

  4. alvi says:

    makasie bnyak ya kaaak 🙂 waaaaa tugas quh kelar nie,,, hehe udah qu pelajari semua,,,

  5. Lutfi says:

    cara mencari deret bilangan genap habis di bagi 3 gimana?
    sama mencari deret bilangan ganjil habis di bagi 3 juga gimana?

  6. Tinggal dimodifikasi sedikit, pengulangannya lebih dari 1x.

    Satu untuk menentukan bilangan ganjil/genap, satunya untuk pembagi (habis dibagi bilangan tertentu).

  7. marfit says:

    makasih banyak atas infonya cukup buat pembelajaran bagi saya

  8. Sri handayani says:

    ass,,,
    kak tolong bantu aku buat bilangan positif kurang dari 10 yang habis di bagi 2
    outputnya
    {2,4,6,8}
    tolong bantu ya kak, makasiih 🙂

Post a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


 Last 50 Posts
 Back
Change Theme...
  • Users » 1
  • Posts/Pages » 46
  • Comments » 311
Change Theme...
  • VoidVoid
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater « Default
  • FireFire
  • LightLight

Ijtima’ Indonesia 2009



    No Child Pages.

Keamanan Informasi Lanjut



    No Child Pages.

About



    No Child Pages.