16 12
發新話題
打印

懇請老師協助指正程式撰寫的錯誤-用迴圈跑三次方程式

推到噗浪
推到臉書

懇請老師協助指正程式撰寫的錯誤-用迴圈跑三次方程式

老師好
我要寫一個程式
用來證明
3^3+4^3+5^3=6^3
此時的3,4,5,6是唯一
所以我設計如下
a^3+b^3+c^3=d^3
我想檢查程式是否會跑出
a=3,b=4,c=5,d=6
但是我寫完了之後
發現程式中有好多打x
懇請老師協助指正
我用的軟體是D++4.9.9.2

#include <iostream>
#include <cmath>
int main()
{
    int a=0,b=0,c=0,d=0;
    int s=0,t=0,u=0,v=0;w=0;
    for (a=0;a<10;a++)
        for (b=0;b<10;b++)
            for (c=0;c<10;c++)
                for (d=0;d<10;d++)
                {
                    s = (int)(pow(a,3));
                    t = (int)(pow(b,3));
                    u = (int)(pow(c,3));
                    v = (int)s+t+u;
                    w = (int)(pow(d,3));
                    if (v==w)
                       std::cout << a << b << c << d << "\n";
                }
                system("pause");

[ 本帖最後由 ksjeng 於 2010-2-11 08:55 PM 編輯 ]

TOP

複製內容到剪貼板
代碼:
int s=0,t=0,u=0,v=0;w=0;
w 前面的逗號,誤打成分號了。
複製內容到剪貼板
代碼:
                    s = (int)(pow(a,3));
                    t = (int)(pow(b,3));
                    u = (int)(pow(c,3));
                    v = (int)s+t+u;
                    w = (int)(pow(d,3));
在 a,b,c,d 前面都加一個 (float) 吧。變成
複製內容到剪貼板
代碼:
                    s = (int)(pow((float)a,3));
                    t = (int)(pow((float)b,3));
                    u = (int)(pow((float)c,3));
                    v = (int)s+t+u;
                    w = (int)(pow((float)d,3));

TOP

老師晚安
謝謝您撥冗指正
還有一個小問題
底下這一行程式說它是錯誤的
x                      std::cout << a << b << c << d << "\n";    syntax error before ':' token

[ 本帖最後由 ksjeng 於 2010-2-12 12:31 AM 編輯 ]

TOP

引用:
原帖由 ksjeng 於 2010-2-12 12:23 AM 發表
老師晚安
謝謝您撥冗指正
還有一個小問題
底下這一行程式說它是錯誤的
x                      std::cout  
在第一行加上
複製內容到剪貼板
代碼:
#include <cstdlib>

TOP

0000
0011
0022
0033
0044
0055
0066
0077
0088
0099
0101
0202
0303
0404
0505
0606
0707
0808
0909
1001
1689
1869
2002
3003
4004
5005
6006
6189
6819
7007
8008
8169
8619
9009
請按任意鍵繼續 . . .

結果是出現這些
但結果猜想應是a=3,b=4,c=5,d=6
3456好像不在其中
跟我使用完全立方式證得它是唯一有衝突
老師怎辦
剛用計算機按6^3+1^3+8^3=9^3是對的
顛覆我之前的證明

[ 本帖最後由 ksjeng 於 2010-2-12 12:57 AM 編輯 ]

TOP

我執行出來的結果是
複製內容到剪貼板
代碼:
0000
0011
0022
0033
0044
0055
0066
0077
0088
0099
0101
0202
0303
0404
0505
0606
0707
0808
0909
1001
1689
1869
2002
3003
3456
3546
4004
4356
4536
5005
5346
5436
6006
6189
6819
7007
8008
8169
8619
9009
那些有兩個變數值是零的顯然會成立,

除了  \(\displaystyle 3^3+4^3+5^3=216=6^3,\)

似乎還有一個  \(\displaystyle 1^3+6^3+8^3=729=9^3\) 也會成立。

TOP

老師
同一個程式
你執行起來有3456
但我的卻沒有
跟我安裝的軟體有關嗎
或是我的程式設定有誤嗎
懇請撥冗指點

[ 本帖最後由 ksjeng 於 2010-2-12 01:05 AM 編輯 ]

TOP

複製內容到剪貼板
代碼:
#include <cstdlib>
#include <iostream>
#include <cmath>

int main(int argc, char *argv[])
{
    int a=0,b=0,c=0,d=0;
    int s=0,t=0,u=0,v=0,w=0;
    for (a=0;a<10;a++)
        for (b=0;b<10;b++)
            for (c=0;c<10;c++)
                for (d=0;d<10;d++)
                {
                    s = (int)(pow((float)a,3));
                    t = (int)(pow((float)b,3));
                    u = (int)(pow((float)c,3));
                    v = (int)s+t+u;
                    w = (int)(pow((float)d,3));
                    if (v==w)
                       std::cout << a << b << c << d << "\n";
                }
   
    system("PAUSE");
    return EXIT_SUCCESS;
}
我是套用你寫的程式而已(如上),

執行結果的確如之前回覆,有 3456 這一組。

IDE 與編譯器使用的是 Dev C++ 4.9.9.2 with Mingw/GCC 3.4.2

我想應該就是你所指的 D++4.9.9.2 。

下載網址:http://www.bloodshed.net/dev/devcpp.html

何以結果不同,這我就不知道了。

TOP

老師
我會重新啟動之後再試一次
謝謝您
晚安

TOP

老師
我殺掉後
下載重灌
結果還是
0000
0011
0022
0033
0044
0055
0066
0077
0088
0099
0101
0202
0303
0404
0505
0606
0707
0808
0909
1001
1689
1869
2002
3003
4004
5005
6006
6189
6819
7007
8008
8169
8619
9009
請按任意鍵繼續 . . .
-----------
好美妙的一件事
一程式碼 兩端執行
竟有兩種結果
祝老師新年快樂

TOP

 16 12
發新話題