CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求救~排列组合后的数据保存和传递

楼主baoK(宝K)2004-05-03 23:09:12 在 C/C++ / C语言 提问

运行程序:  
   
  #include   <stdio.h>  
  #include   <conio.h>  
  #include   <stdlib.h>  
   
  main(){  
      FILE*file;  
      int   a,b,c;  
        file=fopen("c:\\abc.txt","w");  
            for(a=100;a<=200;a+=5)  
            for(b=100;b<=200;b+=5)  
            for(c=100;c<=200;c+=5)  
            {  
   
            printf("A=%d\tB=%d\tC=%d\t\n",a,b,c);  
   
            fprintf(file,"A=%d\tB=%d\tC=%d\t\n",a,b,c);  
   
            }  
            fclose(file);  
   
            }  
    
  能得到下面的排列组合结果  
  A=100 B=100 C=100  
  A=100 B=100 C=105  
  A=100 B=100 C=110  
  A=100 B=100 C=115  
  A=100 B=100 C=120  
  A=100 B=100 C=125  
  A=100 B=100 C=130  
  A=100 B=100 C=135  
  A=100 B=100 C=140  
  A=100 B=100 C=145  
  A=100 B=100 C=150  
  A=100 B=100 C=155  
  A=100 B=100 C=160  
  A=100 B=100 C=165  
  A=100 B=100 C=170  
  A=100 B=100 C=175  
  A=100 B=100 C=180  
  A=100 B=100 C=185  
  A=100 B=100 C=190  
  A=100 B=100 C=195  
  A=100 B=100 C=200  
  A=100 B=105 C=100  
  A=100 B=105 C=105  
  A=100 B=105 C=110  
  A=100 B=105 C=115  
  A=100 B=105 C=120  
  A=100 B=105 C=125  
  A=100 B=105 C=130  
  A=100 B=105 C=135  
  A=100 B=105 C=140  
  A=100 B=105 C=145  
  A=100 B=105 C=150  
  A=100 B=105 C=155  
  A=100 B=105 C=160  
  A=100 B=105 C=165  
  A=100 B=105 C=170  
  A=100 B=105 C=175  
  A=100 B=105 C=180  
  A=100 B=105 C=185  
  A=100 B=105 C=190  
  A=100 B=105 C=195  
  A=100 B=105 C=200  
  A=100 B=110 C=100  
  A=100 B=110 C=105  
  A=100 B=110 C=110  
  A=100 B=110 C=115  
  .  
  .  
  .  
  .  
  .  
  .  
  A=200 B=200 C=190  
  A=200 B=200 C=195  
  A=200 B=200 C=200  
   
   
  请问各位大虾:  
  如何能使程序在每取得一组(A,B,C)值后执行后面的程序(例如D=A+2,E=B+2,F=C+2,G=D+E+F),然后在文件中输出G的数值以及相应的(A,B,C)值,然后再去取一组(A,B,C)值,再做上述计算,再输出,直到所有的(A,B,C)值都取完。  
  最后,比较所有G值中最小的一个,输出这一G值以及与之对应的(A,B,C).  
   
  请各位大虾帮忙      
   
  感谢万分~~~ 问题点数:20、回复次数:4Top

1 楼cngdzhang()回复于 2004-05-03 23:19:47 得分 10

有点奇怪  
  D=A+2,E=B+2,F=C+2,G=D+E+F  
  那么G=A+2   +   B+2   +   C+2=A+B+C+6     ?  
   
  如果输入文件格式是  
  100 100 100  
  会好读很多  
   
  FILE   *fin,*fout;  
   
  int   a,b,c;  
  int   d,e,f,g;  
  int   min=32767,olda,oldb,oldc;  
   
  fsacnf(fin,"%d%d%d",&a,&b,&c);  
  while(!feof(fin))  
  {  
        d=a+2;  
        e=b+2;  
        f=c+2;  
        g=d+e+f;  
        if(min>g)    
        {  
              g=min;  
              olda=a;  
              oldb=b;  
              oldc=c;  
          }  
      fsacnf(fin,"%d%d%d",&a,&b,&c);  
  }  
   
  printf("%d   %d   %d   %d",min,a,b,c);  
   
   
  Top

2 楼Cathryn0000000(苹果雹冰oοО)回复于 2004-05-03 23:31:33 得分 10

这个问题我也一直没解决,但如果以这种100     200     113     这种格式存的,用fscanf()好像就可以吧  
  file=fopen("c:\\abc.txt","r");  
  file2=fopen("c:\\abc2.txt","w");  
  for(i=1;i<=200;i++){  
            fscanf(file,"%d%d%d",a,b,c);  
            d=a+2;  
            e=b+2;  
            f=c+2;  
            g=d+e+f;  
            fprintf(file2,"%d%d%d%d",g,a,b,c);             /*存入另一个文件*/  
  }  
  for(i=0,temp=300;i<200;i++){  
            fgetpos(file2,curpos);                                   /*计下当前流指针的位置*/  
            fscanf(flie2,"%d%*d%*d%*d",&g);  
            if(g<temp)       {  
                                    temp=g;  
                                    pos=curpos;  
                                        }  
          }  
  fsetpos(file2,out);  
  fscanf(file,"%d%d%d%d",g,a,b,c);  
  printf("%d%d%d%d",g,a,b,c);  
   
  伪代码,差不多就这样,我想楼主难解决的可能就是怎么查g最小的那一组吧,只要灵活应用流文件指针,是可以办到的  
  Top

3 楼baoK(宝K)回复于 2004-05-04 12:19:07 得分 0

不好意思     我向问问temp=300是什么意思呢??  
   
   
   
  我是超级菜鸟     别怪我~~Top

4 楼cngdzhang()回复于 2004-05-04 12:24:24 得分 0

temp=300就是设一个尽可能大的数,让它>g  
  那么执行到  
  if(g<temp)  
        {  
                    temp=g;  
                    pos=curpos;  
        }  
  时,可以取到一个较小的g  
   
  和我的程序中的min=32767是一样的道理  
   
  我的程序中  
    if(min>g)    
        {  
              g=min;  
  要改为  
    if(min>g)    
        {  
              min=g;  
   
   
  Top

相关问题

  • 排列组合?
  • 排列组合问
  • 排列组合题
  • 只组合不排列
  • 排列组合的问题
  • 排列组合的问题.
  • 求排列组合算法
  • 排列组合的问题
  • 求排列组合代码
  • 谁有排列组合的算法???急!!!

关键词

  • fopen
  • min
  • abc
  • txt
  • include

得分解答快速导航

  • 帖主:baoK
  • cngdzhang
  • Cathryn0000000

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo