24小时热门版块排行榜    

查看: 1778  |  回复: 8

飞飞鸟

木虫 (正式写手)

[求助] 诚求一个小C语言的程序,十万火急,谢谢大家

求助一个C语言程序达到以下要求即可:
    12.0107*i+1.0079*j+15.9994*k+14.0067*d=978.7906
其中i,j,k,d必须是整数,29≤i≤40;58≤j≤83;j≤2i+3;17≤k≤30;2≤d≤6;
麻烦了,比较急用呵呵呵谢谢大侠!

[ Last edited by ben_ladeng on 2011-6-20 at 13:14 ]
回复此楼
哈哈哈小木虫我又来啦
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengxc

木虫 (著名写手)

【答案】应助回帖

飞飞鸟(金币+1): 不好意思啊,能详细给个小程序吗,谢谢!因为我不是学这方面的 2011-06-17 14:35:11
写个四重的循环,
2楼2011-06-17 14:31:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

harryzs

铜虫 (正式写手)

homework~~???
3楼2011-06-17 15:01:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengxc

木虫 (著名写手)

【答案】应助回帖

★ ★
飞飞鸟(金币+3): 谢谢 2011-06-17 16:47:00
jjdg(金币+2): 感谢参与 2011-06-17 22:08:05
你确定这个问题有解吗?我算不出结果啊

#include "stdafx.h"
#include "iostream.h"
int main( )
{
        int i,j,k,d;
        for(i=29 ;i<=40;i++)
        {
                for(j=58; j<=83;j++)
                        if(j <= 2*i+3)
                        {
                                for(k=17; k<=30;k++)
                                {
                                        for(d=2;d<=6;d++)
                                        {
                                                if(12.0107*i+1.0079*j+15.9994*k+14.0067*d == 978.7906)
                                                {       
                                                        cout<                                                         cout<                                                         cout<                                                         cout<                                                         //printf("%d %d %d %d\n",i,j,k,d);
                                                }
                                        }
                                }
                        }
        }
       
       
        printf("process finished!\n";
        return 0;
}
4楼2011-06-17 15:25:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaowt9999

金虫 (小有名气)

【答案】应助回帖

★ ★
飞飞鸟(金币+3): 谢谢哈 2011-06-17 16:47:17
jjdg(金币+2): 辛苦了 2011-06-17 22:07:43
此题的解的组数与求解精度有关
例如要求12.0107*i+1.0079*j+15.9994*k+14.0067*d-978.7906<0.1时,有14组解。当精度为0.01时,没有解。

以下是程序:
#include
#include
#include
#include
int i,j,k,d,sum=0;
double fg,a[500][4];
void main()
{
for(i=29;i<=40;i++)
{
        for(j=58;j<=83;j++)
        {
                for(k=17;k<=30;k++)
                {
                        for(d=2;d<=6;d++)
                        {
                           fg=12.0107*i+1.0079*j+15.9994*k+14.0067*d-978.7906;
                           if(fabs(fg)<1e-1&&j<=2*i+3)/*此处可改求解精度例如  1e-2 1e-3 1e-4*/
                           {
                                   a[sum][0]=i;
                                   a[sum][1]=j;
                                   a[sum][2]=k;
                                   a[sum][3]=d;
                                   sum++;                                  
                           }
                  
                        }
       
                }
        }
}
cout<<"方程解的总组数sum="< cout< for(i=0;i {  
        for(j=0;j<4;j++)
                cout<[j]<<"  ";
        cout< }
}
5楼2011-06-17 15:59:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)


jjdg(金币+1): 感谢参与 2011-06-17 22:07:30
引用回帖:
Originally posted by mengxc at 2011-06-17 15:25:46:
你确定这个问题有解吗?我算不出结果啊

#include "stdafx.h"
#include "iostream.h"
int main( )
{
        int i,j,k,d;
        for(i=29 ;i<=40;i++)
        {
                for(j=58; j<=83;j++)
                        if ...

浮点数不是精确类型,算浮点数的方程时需要精度的。特别是这种看起来像逼近问题的方程。
漩涡的中心有一块空地,空空的。
6楼2011-06-17 16:03:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengxc

木虫 (著名写手)

【答案】应助回帖

飞飞鸟(金币+1): 如果不用比较是否等于978了,直接让程序计算,然后分别得到i,j,k,d的值的话该怎么写啊?其中d是偶数,只可能是2、4、6?谢谢 2011-06-17 17:22:55
引用回帖:
Originally posted by huycwork at 2011-06-17 16:03:30:
浮点数不是精确类型,算浮点数的方程时需要精度的。特别是这种看起来像逼近问题的方程。

谢谢提醒,我再试试
7楼2011-06-17 16:05:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

whiterye

新虫 (初入文坛)

【答案】应助回帖

★ ★
jjdg(金币+1): 欢迎新虫 2011-06-20 12:05:41
jjdg(金币+1): 感谢参与 2011-06-20 12:05:51
飞飞鸟(金币+3): 2011-07-12 11:03:08
用xiaowt9999提供的程序,我截了个图

8楼2011-06-19 23:23:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xioooli

金虫 (小有名气)

【答案】应助回帖

★ ★
jjdg(金币+2): 感谢应助 2011-06-20 12:05:21
飞飞鸟(金币+3): 2011-07-12 11:03:00
飞飞鸟(金币+6): 谢谢 2011-08-23 18:53:56
CODE:
#!/usr/bin/python2
for i in range(29, 41):                                                                 
    for j in range(58, 84):                                                            
        if not j <= 2*i + 3:                                                            
            continue                                                                    
        for k in range(17, 31):                                                         
            for d in range(2, 7):                                                      
                result = 12.0107*i+1.0079*j+15.9994*k+14.0067*d - 978.7906              
                if abs(result) < 0.1:                                                   
                    print "i=%d, j=%d, k=%d, d=%d" %(i,j,k,d)

9楼2011-06-20 11:27:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 飞飞鸟 的主题更新
信息提示
请填处理意见