Wednesday, August 27, 2014

Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số thực n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.

 Cho tệp văn bản input.txt dòng đầu chứa 2 số nguyên n và m, tiếp theo là một ma trận các số thực n x m. Các số cách nhau ít nhất một dấu cách trống hoặc ít nhất một dấu xuống dòng. Xây dựng mảng một chiều b gồm các số nguyên tố có mặt trong mảng hai chiều a. Xây dựng mảng một chiều b gồm các số hoàn hảo có mặt trong mảng hai chiều a.



#include <stdio.h>
#include <conio.h>
intktsnt(unsigned longn)
{
    unsigned long i;
       if (n==0 || n==1) return 0;
       for(i=2;i*i<=n;i++) if (n%i==0) return 0;
       return 1;    
}
intktsht(unsigned longn)
{
    unsigned long i,k=0;
       for(i=2;i<n;i++) if(n%i==0)
       {
              k+=i;
              if(k>n) return 0;
       }
       if (n==k) return 1; else return 0;
}
voiddocdl(float a[][50],int*n,int *m)
{
       int i,j;
       FILE *u;
       u=fopen("c:\\input.txt","rt");
       fscanf(u,"%d%d",&*n,&*m);
       for(i=0;i<*n;i++)
              for(j=0;j<*m;j++)
              fscanf(u,"%f",&a[i][j]);
       fclose(u);
}
voidxemmang1(unsigned longa[],unsigned longn)
{
       unsigned long i;
       printf("\n"); 
       for(i=0;i<n;i++)
              printf("  %lu  ",a[i]);
       printf("\n");
}

voidxemmang2(float a[][50],intn,int m)
{
    int i,j;
       printf("\n");
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
       printf("%10.2f",a[i][j]);
       printf("\n");
    }
       printf("\n");
}
voidxuly(float a[][50],intn,int m,unsignedlong b[],unsignedlong *demnt,unsignedlong c[],unsignedlong *demht)
{
    int i,j;
    for(i=0;i<n;i++)
    {
       for(j=0;j<m;j++)
          if((a[i][j]/1.0)==((unsignedlong)a[i][j]/1)&&a[i][j]>0)
          {
                 if (ktsnt((unsignedlong)a[i][j]))
                 {
                        b[*demnt]=(unsignedlong)a[i][j];
                        *demnt = *demnt + 1;
                 }
                 if (ktsht((unsignedlong)a[i][j]))
                 {
                        b[*demht]=(unsignedlong)a[i][j];
                        *demht= *demht + 1;
                 }
          }
    }
}
voidmain()
{
       floata[50][50];  //mang luu du lieu vao
       unsigned long b[2500],demnt=0,// mang luu so nguyen to.
                        c[2500],demht=0;// mang luu so hoan thien.
       intm=0,n=0;
       docdl(a,&n,&m);
       xemmang2(a,n,m);
       xuly(a,n,m,b,&demnt,c,&demht);
       printf("\n Mang nguyen to dc tao la");
       xemmang1(b,demnt);
       printf("\n Mang so hoan thien dc tao la");
       xemmang1(c,demht);
       printf("\nHoan Tat ");
       getch();

}

No comments:

Post a Comment