| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 993 人关注过本帖
标题:正确的程序,但不能运行应如何修改?
取消只看楼主 加入收藏
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
正确的程序,但不能运行应如何修改?

#include<iostream.h>
#include<stdlib.h>

int a[20]={2,0,6,23,41,0,5,6,0,99,33,22,0,12,67,0,9,3,6,23};
int *p,i,j=0;
int **y;

int main()
{
    y = (int **)calloc(20,sizeof(int *));

    p=&a[0];
     
    for(i=0;i<20;i++)
    {
        if(*(p+i)!=0)
        {
            *(y+j)=p+i;
            
            cout<<**(y+j)<<" ";

            j++;
        }
    }
    cout<<"\n";
   
    for(i=0;i<=j;i++)
    {
        if(i>2)
        {
            while(**(y+i)>**(y+i-1) && **(y+i-1)>**(y+i-2))
            {
                cout<<**(y+i)<<" ";break;
            }
        }
    }
   
    return 0;
}

运行后没有结果,屏幕显示指令引用的内存不能为"read",请问如何修改?








[ 本帖最后由 yxb0001 于 2009-9-23 15:11 编辑 ]
搜索更多相关主题的帖子: 运行 
2009-09-23 13:43
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
收藏
得分:0 
上部分运行没有问题,但下面加了一点东东,运行就有问题了。这些东东如下:

for(i=0;i<=j;i++)
    {
        while(**(y+i)>**(y+i-1) && **(y+i-1)>*(y+i-2))
        {
            cout<<**(y+j)<<" ";
        }
    }


[ 本帖最后由 yxb0001 于 2009-9-23 14:29 编辑 ]
2009-09-23 13:51
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
收藏
得分:0 
即使改为下面也一样,估计不是越界这个问题。 (所加东东有点笔误,已修改过来)
for(i=0;i<=j;i++)  
    {  
       if(i>=2){
         while(**(y+i)>**(y+i-1) && **(y+i-1)>**(y+i-2))  
         {  
            cout<<**(y+j)<<" ";  
         }  
        
        }
}
 
我想实现的功能是:在数组a中除0处的元素组成的新数组中(原来的地址不变),如果按顺序的三个数存在a>b>c的关系,则显示a。

[ 本帖最后由 yxb0001 于 2009-9-23 14:31 编辑 ]
2009-09-23 14:25
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
收藏
得分:0 
while这里包含if的过滤功能,过界在此不适应。如下程序可表明此功能:

#include<iostream.h>  
#include<stdlib.h>  
 
int a[20]={2,0,6,23,41,0,5,6,0,99,33,22,0,12,67,0,9,3,6,23};  
int i;
 
int main()
{
    for(i=0;i<20;i++)
    {
     
        while(a[i]>a[i-1] && a[i-1]>a[i-2])
     
        {
            cout<<a[i]<<" ";
     
            break;
        }
    }
    return 0;
}
2009-09-23 14:51
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
收藏
得分:0 
谢谢!这种方法我会,这个问题主要是想运用指针的指针方法解决。
2009-09-23 15:07
yxb0001
Rank: 2
等 级:论坛游民
帖 子:50
专家分:35
注 册:2009-9-9
收藏
得分:0 
明白了,是j溢出的原因,for(i=0;i<=j;i++)  改为for(i=0;i<j;i++)即可。指针数组的元素是j个不是(j+1)个。  
2009-09-23 15:20
快速回复:正确的程序,但不能运行应如何修改?
数据加载中...
 
   



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

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