Kamis, 14 Juli 2011

DJIKSTRA algoritma

Assalammuaikum Wr. Wb.

    Sebelumnya kami ucapkan terimakasih pada yang telah memberikan informasi pada kami tentang Bahasa C dan algoritma Djikstra.
Kakak-kakak sekalian yang telah belajar algoritma atau Bahasa C dan siapa saja yang mencari algoritma Djikstra silahkan saja kakak-kakak sekalian pelajari progam di bawah ini. Tetapi sebelumnya kakak-kakak sekalian harus mempelajari dasar-dasar dari Djikstra.
Jujur saja program ini merupakan terjemahan dari blog yang lain, bukan maksud kami menjiplak hasil karya orang lain tetapi disini kami coba memperjelas lagi dan menerjemahkan dalam bahasa sehari-hari.
Sebenarnya program ini merupakan tugas pemrograman di sekolah kami, dan untuk mendapatkan program ini sangat sulit sekali begitu juga menerjemahkannya, sampai sekarang juga kami khususya penulis tidak SEPENUHNYA paham. Mungkin dengan program dibawah ini dapat membantu kakak-kakak sekalian yang mencari program djikstra.Amin....


#include<stdio.h>
#include<stdlib.h>
void main()
{   
        printf("\n\t\t\t<<<PROGRAM MENCARI RUTE TERPENDEK>>>\n");
        printf("\t\t\t====================================\n");
         int grafik[15][15],s[15],jalan_maksimal[15],tanda[15];
        int kota_asal,sumber,i,j,u,pendahulu[15];
         int count=0;
         int minimum(int a[],int m[],int k);
         void printpath(int,int,int[]);
        
         printf("\n=========================");
         printf("\nMasukkan Banyak Kota: ");
         scanf("%d",&kota_asal);
         printf("=========================");
         if(kota_asal<=0)
         {
              printf("\nKOTA TIDAK TERDAFTAR\n");
               exit(1);
         }
         printf("\n\n\nMASUKAN JARAK BERDASARKAN MATRIK\n");
         printf("================================");
        for(i=1;i<=kota_asal;i++)
         {
              printf("\nMasukkan Jarak Semua Kota Dari Kota Ke-%d\n",i);
              for(j=1;j<=kota_asal;j++)
                  {
                       scanf("%d",&grafik[i][j]);
                  }
         }
     printf("\n\n========================");
     printf("\nMasukkan Kota Asal: ");
     scanf("%d",&sumber);
     printf("========================\n");
     printf("\n\nMaka Jalan Terdekat Ke Semua Kota Adalah");
     printf("\n========================================");
   
     for(j=1;j<=kota_asal;j++)
     {
          tanda[j]=0;
        jalan_maksimal[j]=999;
          pendahulu[j]=0;
     }
     jalan_maksimal[sumber]=0;
     while(count<kota_asal)
     {
      u=minimum(jalan_maksimal,tanda,kota_asal);
      s[++count]=u;
      tanda[u]=1;
      for(i=1;i<=kota_asal;i++)
          {
           if(grafik[u][i]>0)
           {
            if(tanda[i]!=1)
            {
            if(jalan_maksimal[i]>jalan_maksimal[u]+grafik[u][i])
                {
                 jalan_maksimal[i]=jalan_maksimal[u]+grafik[u][i];
                 pendahulu[i]=u;
                }
            }
           }
          }
      }
 
     for(i=1;i<=kota_asal;i++)
     {
         printpath(sumber,i,pendahulu);
         if(jalan_maksimal[i]!=999)
         printf("->(%d)\n",jalan_maksimal[i]);
     }
}

int minimum(int a[],int m[],int k)
{
 int mi=999;
 int i,t;
 for(i=1;i<=k;i++)
 {
  if(m[i]!=1)
      {
          if(mi>=a[i])
          {
           mi=a[i];
           t=i;
          }
     }
 }
 return t;
}
   
void printpath(int x,int i,int p[])
{
     printf("\n");
    if(i==x)
    {
        printf("%d",x);
    }
        else if(p[i]==0)
        printf("TIDAK ADA JALAN DARI %d KE %d",x,i);
        else
        {
            printpath(x,p[i],p);
            printf("..%d",i);
        }
}

Jumat, 15 April 2011

bilngan ganjil genap

#include<stdio.h>

int main()
{
   
    int a;
    printf("masukan angka= ");
    scanf("%i", &a);

    if (a%2==0)
    printf ("genap\n");
    else
    printf ("ganjil\n");
}

mencari rata-rata nilai sesuai keinginan

#include<stdio.h>
main()
{
    int a,x,b;
    float j,r;
    a=1;
    j=0;
    r=0;
    printf("masukan banyak data= ");
    scanf("%d", &x);
    while(a<=x)
    {    printf("%d masukan data= ",a);
        scanf("%d",&b);
        j=j+b;
        r=j/x;
        a++;
    }
    printf("rata-rata= %f", r);
    getch();
}

penjumlahan dengan banyak inputan data

#include<stdio.h>
main()
{
    int a,x,b;
    float j,r;
    a=1;
    j=0;
    r=0;
    printf("masukan banyak data= ");
    scanf("%d", &x);
    while(a<=x)
    {    printf("%d masukan data= ",a);
        scanf("%d",&b);
        j=j+b;
        r=j/x;
        a++;
    }
    printf("rata-rata= %f", r);
    getch();
}

volume & luas setengah bola

#include<stdio.h>
#define phi 3.14
main()
{
    int r;
    float volume,luas;
   
    printf("Menghitung Volume Setengah Bola dan Luas Permukaannya\n");
    printf("\n");
    printf("Masukan Jari-jari    = ");
    scanf("%d",&r);
    printf("\n");
    volume=(phi*r*r*r*2/3);
    luas=((phi*r*r*4)/2)+(phi*r*r);
    printf("Volume Setengah Bola    = %f\n",volume);
    printf("Luas Permukaan Bola    = %f\n",luas);
}

konversi suhu

#include<stdio.h>
#include<conio.h>

int main()
{   
    int c, r, f, suhu;
    float x, y, z;

printf("Konversi suhu\n");
printf("1= celcius to reamur\n");
printf("2= celcius to fahrenheit\n");
printf("3= reamur to celcius\n");
printf("4= reamur to fahrenheit\n");
printf("5= fahrenheit to celcius\n");
printf("6= fahrenheit to reamur\n");
printf("Anda mau konversi yang mana? ( pilih ) = ");
scanf("%d", &suhu);
switch(suhu)
{     case 1 : {printf("celcius to reamur\n");
    printf("\n");
    printf("celcius\t= ");
    scanf("%d",&c);
    x=4*c/5;
    printf("reamur\t= %f\n",x);
}   
    break;
    case 2 : {printf("celcius to fahrenheit\n");
    printf("\n");
    printf("celcius\t= ");
    scanf("%d",&c);
    x=(9*c/5)+32;
    printf("fahrenheit\t= %f\n",x);
}
    break;
    case 3 : {printf("reamur to celcius\n");
    printf("\n");
    printf("reamur\t= ");
    scanf("%d",&r);
    y=(5*r/4);
    printf("celcius\t= %f\n",y);
}
    break;
    case 4 : {printf("reamur to fahrenheit\n");
    printf("\n");
    printf("reamur\t= ");
    scanf("%d",&r);
    y=(9*r/4)+32;
    printf("fahrenheit\t= %f\n",y);
}
    break;
    case 5 : {printf("fahrenheit to celcius\n");
    printf("\n");
    printf("fahrenheit\t= ");
    scanf("%d",&f);
    z=5*(f-32)/9;
    printf("celcius\t= %f\n",z);
}
    break;
    case 6 : {printf("fahrenheit to reamur\n");
    printf("\n");
    printf("fahrenheit\t= ");
    scanf("%d",&f);
    z=4*(f-32)/9;
    printf("reamur\t= %f\n",z);
   
}

    break;
   
default: printf("kode yang anda masukkan SALAH\n");
}
getch();
}