| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 427 人关注过本帖
标题:我的程序中的指针bd为什么读取不了b的地址???
只看楼主 加入收藏
小小的飞机
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-7-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
我的程序中的指针bd为什么读取不了b的地址???
#include <iostream>
#include <math.h>
#include<cstdlib>

using namespace std;
double *a=new double[1000];
double *x=new double[1000];
double *b=new double[10];
double *c=new double[10000];
double *y=new double[10000];
int j=10000;
double *PI=new double[j];
double g;
double *ad;
double *xd;
double *bd;
double *cd;
double *yd;
int main ()
{
    // AGM π计算程序
    g=0;
       a[1000]=1;
    x[1000]=1;
    b[10]=sqrt(2)/2;  
    c[10000]=0.25;
    //给指针赋值:
    ad = &a[1000];
    xd = &x[1000];
    bd = &b[10];
    //重复计算
    while (g<=10)
    {
        y[1000]=a[1000];
        yd=&y[10000];
        a[1000]=(*ad + *bd)/2;//a[1000]=(*ad + *bd)/2
        b[10000]=sqrt(*bd * *yd);
        c[10000]=*cd - *xd * (*ad - *yd) * (*ad - *yd);
        x[1000]=*xd * 2;
        g++;
    }
    PI[j]=(*ad + *bd) * (*ad + *bd) / (4 * *cd);  //π
    cout<<"π=";
    cout<<PI[j];
    cout<<endl;
    system (" pause ");
    delete [j]PI;
    delete [100]a;
    delete [100]x;
    delete [1000]b;
    delete [1000]c;
    delete [1000]y;
    return 0;
}
搜索更多相关主题的帖子: double include 
2013-07-31 17:41
小小的飞机
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-7-31
收藏
得分:0 
我的是用AGM公式算π,
公式:
初值:a=x=1 b=1/sqrt(2) c=1/4
重复计算:y=a a=(a+b)/2 b=sqrt(by) c=c-x(a-y)^2 x=2x
最后:pi=(a+b)^2/(4c)

我用断点看到bd读取不了b[10000]的地址。

2013-07-31 17:46
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
有那么复杂吗

不过我的代码 只能取到小数点后14位是正确的  以后的就不对了  不知道为什么
程序代码:
/*公式:
初值:a=x=1 b=1/sqrt(2) c=1/4
重复计算:y=a a=(a+b)/2 b=sqrt(by) c=c-x(a-y)^2 x=2x
最后:pi=(a+b)^2/(4c)
*/
#include <stdio.h>
#include <math.h>
int main()
{
    double a,x,b,c,y,p;
    int k=0;
    a=1.0;
    x=1.0;
    b=1.0/(double)(sqrt(2.0));
    c=1.0/4.0;
    //开始计算π
start:
    y=a;
    a=(a+b)/2.0;
    b=(double)sqrt(b*y);
    c=c-x*(a-y)*(a-y);
    x=2.0*x;
    k++;
    if (k<1000) goto start;
    p=(a+b)*(a+b)/(4.0*c);
    printf("%.30f\n",p);
    return 0;
}




DO IT YOURSELF !
2013-07-31 19:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54061
注 册:2011-1-18
收藏
得分:17 
对于数组arr[N]而言,下标是从0到N-1,怎么还会出现 y[1000]=a[1000] 之类的东西
另外,对于你的 delete [100]a,我想问一下如果如果写成 delete [99]a 那效果有什么不同?
2013-08-01 08:29
快速回复:我的程序中的指针bd为什么读取不了b的地址???
数据加载中...
 
   



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

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