| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 421 人关注过本帖
标题:如何实现这样的程序
只看楼主 加入收藏
ameko
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-11-30
收藏
 问题点数:0 回复次数:4 
如何实现这样的程序
请教用什么软件如何编程可以实现下列要求:
输入一个数a
x1+x2+x3=a
y1=0.1 (0<x1<100)
y1=0.2 (100<x1)
y2=0.1 (0<x2<100)
y2=0.2 (100<x2)
y3=0.1 (0<x3<100)
y3=0.2 (100<x3)
求:x1,x2,x3为何值时x1*y1+x2*y2+x3*y3的和最小?
搜索更多相关主题的帖子: 如何实现这样的程序 
2008-11-30 14:54
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
我的天哪!!
你这是什么题目啊?
我看看..
用C写吧?
等等

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-30 20:00
zqy110007
Rank: 3Rank: 3
来 自:外太空
等 级:论坛游民
威 望:6
帖 子:1493
专家分:82
注 册:2008-11-19
收藏
得分:0 
蠢办法:
程序代码:
int main(){
  int i,j,k;
  float a,b,c;
  int m[3]={200,200,200};
  float min=60;
  for(i=1;i<=200;i++){
    if(i>0 && i<=100)
      a=0.1;
    else
      a=0.2;
    for(j=1;j<=200;j++){
      if(j>0&&j<=100)
        b=0.1;
      else
        b=0.2;
      for(k=1;k<=200;k++){
        if(k>0 && k<=100)
          c=0.1;
        else
          c=0.2;
        if(1.0*i*a+1.0*j*b+1.0*k*c<min){
          m[0]=i;
          m[1]=j;
          m[2]=k;
          min=1.0*i*a+1.0*j*b+1.0*k*c;
        }
      }
    }
  }
  printf("x1=%d\nx2=%d\nx3=%d\n",m[0],m[1],m[2]);
  getch();
}

   
   
希望有高手指点一下我的不足,谢谢
从来没遇到过这种题型

每个人都是蛤蟆,只是井的大小不同罢了.
沙石下的泉水,挖得越深,泉水越清.
2008-11-30 20:09
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*-----------------------------------------------------------------------------

        输入一个数a
        x1+x2+x3=a
        y1=0.1 (0<x1<100)
        y1=0.2 (100<x1)
        y2=0.1 (0<x2<100)
        y2=0.2 (100<x2)
        y3=0.1 (0<x3<100)
        y3=0.2 (100<x3)
        求:x1,x2,x3为何值时x1*y1+x2*y2+x3*y3的和最小?

===================================================================

        设 a 及  x1,x2,x3 均为 int 型。

-----------------------------------------------------------------------------*/
#include<stdio.h>
int main(void)
{
    int a,x1,x2,x3,num1,num2,num3;
    float y1,y2,y3,num;
    printf("input a :\n");
    scanf("%d",&a);
    num=a;
    for(x1=1;x1<=a-2;++x1)
        for(x2=1;x2<=a-2;++x2)
            for(x3=1;x3<=a-2;++x3)
                if(a==(x1+x2+x3))
                {
                    y1=x1<100?0.1:0.2;
                    y2=x2<100?0.1:0.2;
                    y3=x3<100?0.1:0.2;
                    if(num>x1*y1+x2*y2+x3*y3)
                    {
                        num=x1*y1+x2*y2+x3*y3;
                        num1=x1;num2=x2;num3=x3;
                    }
                }
    printf("x1=%d x2=%d x3=%d\n",num1,num2,num3);
    return 0;
}
2008-11-30 21:11
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 第3楼 zqy110007 的帖子
别的没看,不过如果 a 值大于600,a==x1+x2+x3 这个式子就不成立了。所以,它们的取值范围为 0< x1 <a-2;
2008-11-30 21:14
快速回复:如何实现这样的程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017500 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved