首页 > 用户发贴区 > 编程问题提问区 > C语言编程,麻烦帮忙哈
2008
05-14

C语言编程,麻烦帮忙哈

一、设计要求:


1、对如下文本文件内容


03 04 08 17 18 22 25 29


 03 04 17 18 22 25 29 30


 03 08 17 18 22 25 29


 03 04 08 14 17 18 22 29 30


 03 08 14 18 22 25 29 30


 03 08 14 17 18 22 25 26 29


 03 08 14 18 22 25


 03 04 14 17 18 25 29 30


 03 04 08 17 22 26 29


 03 04 17 18 22 29 30


 03 04 08 14 18 22 25


 04 08 17 18 22 25 30


 03 18 22 25 26 29 30


 03 04 08 17 18 22 25


 03 04 08 14 17 22 25 26


 03 04 08 18 22 30


 03 04 08 17 18 22 25 30


 03 04 08 14 17 18 22 25


 03 08 18 22 25 26 29


 03 04 08 17 18 22 25


 03 04 18 22 25 26


 03 04 08 14 22 25 29


 03 08 14 17 18 22 25 29


 03 04 08 17 22 29 30


 03 08 18 25 29 30


 03 08 14 17 18 25


每三组进行组合,如果存在6个以上相同数据,则将该6个数据写入另一个文件保存,如下面三组数据


03 04 08 17 18 22 25 29


 03 04 17 18 22 25 29 30


 03 08 17 18 22 25 29


中有6个相同的数据 03 17 18 22 25 29,就将该组相同的数据保存在另一文件中,具有相同的只保留一组。



 


 


C语言编程,麻烦帮忙哈》有 2 条评论

  1. haoshi2011 说:

    #include<stdio.h>
    #include<stdlib.h>
    #define N  1000
    #define M  9
     struct twonum{
     char a;
     char b;
    };
    int read_f(twonum t[N][M])
    {//从文件读取信息储存到数组中
       FILE * fp;
       if((fp=fopen(“g:\\作业\\彩票分析.txt”,”r”))==NULL)
        printf(“can not open this file”);
       int i=0,j=0;
       char ch;
     while((ch=fgetc(fp))!=EOF)//读取文件数据
     {
        if(ch==’ ‘);
        else
        {
         if(ch==’\n’)
         {
          i++;j=0;
         }
         else
         {
         t[i][j].a=ch;
         t[i][j].b=fgetc(fp);
           j++;
         }
      
        }
     }
     return i;
    };
    void write_f(int n,twonum c[N][M])
    {//将数组的信息输入文本中
     FILE * fp;
     if((fp=fopen(“g:\\作业\\结果.txt”,”w”))==NULL)
      printf(“can not open this file”);
     int i,j;
     for(i=0;i<n;i++){

      for(j=0;j<M;j++)
      {
           fputc(c[i][j].a,fp);
           fputc(c[i][j].b,fp);
           fputc(‘ ‘,fp);
      }
            fputc(‘\n’,fp);
     }
     fclose(fp);
    }

    void display_a(int i,twonum c[N][M])
    { //测试是否取得文件上的字符
     int k,l;
     for(k=0;k<i;k++)
     {
      for(l=0;l<M;l++)
      {
       printf(“%c%c “,c[k][l].a,c[k][l].b);
      }
      printf(“\n”);
     }
    }
    int equal_a(int i,int j,twonum d[N][M])
    {//判断数组中的两行是否相等
     int k,m=1;
     for(k=0;k<M;k++)
      if(d[i][k].a!=d[j][k].a||d[j][k].b!=d[i][k].b)
      {
       m=0;
       break;
      }
      return m;
    };
    int equal_t(int i,twonum d[N][M])
    {//判断待输入数组的的一行与数组中的元素是否相同
     int j,m=0;
     if(i==0);
     else
     {
     for(j=0;j<i;j++)
      if(equal_a(i,j,d))
      {
       m=1;
       break;
      }
     }
     if(m==1)
      for(j=0;j<i;j++)
      {
       d[i][j].a=’\0′;
          d[i][j].b=’\0′;
      }
     return m;
    };
    int judeg(int i,int j,int k,int m,int n,twonum t[N][M],twonum c[N][M])
    {//判断是否满足要求,先比较2组满足条件在接着比较
     int h,w,z=0,d=0,p=0,e=0;
      twonum b[M];
      twonum q[N][M];
       for(h=0;h<M;h++)                       //比较2组
       {
            for(w=0;w<M;w++)
         {
         if(t[i][h].a!=’\0′&&t[i][h].a==t[j][w].a&&t[i][h].b==t[j][w].b)
         {
          b[z]=t[i][h];
      //        printf(“%c%c “,b[z].a,b[z].b);
          z++;break;
         }
         }
       }
     //  printf(“%d”,z);
     
     if(z>=6)
     {
      for(h=0;h<z;h++)                              //继续比较
      {
      for(w=0;w<M;w++)
      {
      if(b[h].a==t[k][w].a&&b[h].b==t[k][w].b)
      {
       c[n][d].a=b[h].a;
       c[n][d].b=b[h].b;
        d++;break;
        }
       }
      }
      if(d>=6) //显示结果
      {
       e=1;
      }
     }
     return e;
    }   
    void main()
    {
     int i,j,k,m,n=0,p;
        twonum c[N][M]={0},t[N][M]={0};
        m=read_f(t);//printf(“%d”,m);
    // display_a(m,t);
     for(i=0;i<m-2;i++)
      for(j=i+1;j<m-1;j++)
          for(k=j+1;k<m;k++)
       {
        p=judeg(i,j,k,m,n,t,c);
        if(p==1)
             if(!equal_t(n,c))
          {
               n++;
          }
       }
      //printf(“%d”,n);
       display_a(n,c);
       write_f(n,c);
    }

  2. haoshi2011 说:

    难道真的没有人会做了吗?还没有人能帮忙吗

留下一个回复