Thread: chinise renmainder

  1. #1
    Registered User
    Join Date
    Apr 2010
    Posts
    1

    chinise renmainder

    I have created algorithms Chinese remainder problem, whether the structure of my C programming language is correct
    ************************************************** **********************
    Code:
    #include <stdio.h>
    void baca(int A[], int B[], int g)
    {
    	int i,temp;
    	for(i=0;i<g;i++)
    	{
    		printf("\t\t\tx  = a mod b :untuk a<b\n");
    		printf("\t\t\t***********************\n");
    		do
    		{
    			printf("\t\t\t a = " ); scanf("%d",&A[i]);
    			printf("\t\t\t b = " ); scanf("%d",&B[i]);
    			if(A[i]>B[i])
    			{
    				printf("\t\t\t******************\n");
    				printf("\t\t\tdata [a>b] tidak di proses mohon ulangi input anda sampai input=[a<b]\n");
    				printf("\t\t\tdata yang baru masukan  akan di hapus, mulai input dari awal\n");
    				printf("\t\t\t******************\n");
    			}
    			else
    				printf("\t\t\tData yang anda Inputkan sudah benar, silahkan lanjutkan\n");
    		}while(A[i]>B[i]);
    	}
    
    }
    void tulis(int A[], int B[], int u)
    {
    	int i;
    	for(i=0;i<u;i++)
    	{	printf("\t\t\t..............\n");
    		printf("\t\t\tx = %d mod %d \n",A[i],B[i]);
    		printf("\t\t\t..............\n");
    	}
    }
    void proses(int a[], int b[], int h[], int n)
    {
    	int i,w,j,e,k,temp,r;
    	int q,we;
    	w=1;
    	for(i=0;i<n;i++)
    	{
    		w=w*b[i];
    	}
    	for(i=0;i<n;i++)
    	{
    		j=1;
    		e=1;
    		k=w/b[i];
    		do
    		{
    			r=(k*j-1)%b[i];
    			j++;
    		}while(r!=0);
    		j--;
    		temp=h[i];
    		h[i]=j;
    		j=temp;
    		
    	}
    	q=0;
    	for(i=0;i<n;i++)
    	{
    		q=q+(w/b[i])*a[i]*h[i];
    	}
    	we=q%w;
    	printf("\t\t\t*****************************\n");
    	printf("\t\t\tBilangan yang memenuhi x = %d\n",we);
    	printf("\t\t\t%d = %d mod %d\n",q,we,w);
    	printf("\t\t\t*****************************\n");
    }
    int gcd(int A[], int B[], int n)
    {
    	int i,sisa,flag,r,s;
    	i=0;flag=0;
    	while(i<n && flag==0)
    	{
    		r=A[i];s=B[i];
    		do
    		{
    			sisa=s%r;
    			s=r;
    			r=sisa;
    		}while(sisa!=0);
    		if(s==1)
    		{
    			flag=0;
    		}
    		else
    		{
    			flag=1;
    		}
    		i++;
    	}
    	return flag;
    }
    main()
    {
    	int n,j;j=0;
    	char pilih;
    	pilih='y';
    	int a[6]; int b[6]; int h[6];
    	printf("\t\t\tTugas di compile dengan gcc di GNU LINUX\n");
    	printf("\t\t\t.......................................\n");
    	printf("..............................\n");
    	printf("..........................\n");
    	do
    	{
    		printf("Banyak data : "); scanf("%d",&n);
    		baca(a,b,n);
    		tulis(a,b,n);
    		j=gcd(a,b,n);
    		if(j==0)
    		{
    			proses(a,b,h,n);
    		}
    		else
    		{
    			printf("\t\t\tgcd tidak sama dengan 1 \n");
    			printf("\t\t\tTidak memenuhi sayarat [mi*nj]=1\n");
    			printf("\t\t\tTIdak ada penyeleseaian\n");
    		}
    		printf("Masukan data lagi atau tidak Y/t = "); scanf("%s",&pilih);
    	}while(pilih=='y' || pilih=='Y');
    	if(pilih!='y' || pilih!='Y')
    	{
    		printf("\t\t\tAnda sudah keluar dari program\n");
    		printf("\t\t\tTerima kasih\n");
    	}
    
    }
    Last edited by Salem; 06-04-2010 at 09:14 AM. Reason: Added [code][/code] tags - learn to use them yourself

  2. #2
    Woof, woof! zacs7's Avatar
    Join Date
    Mar 2007
    Location
    Australia
    Posts
    3,459
    1. Use code tags.
    2. Program in English, it's a well-established convention.

Popular pages Recent additions subscribe to a feed