| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 517 人关注过本帖
标题:第一个C++ 程序 类的定义
只看楼主 加入收藏
朱三哥
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:311
专家分:359
注 册:2012-12-11
结帖率:62.07%
收藏
已结贴  问题点数:20 回复次数:4 
第一个C++ 程序 类的定义
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
class heapify
{
public:
    heapify(int n);                      //构造函数
    ~heapify() {delete [] a;}
    void heapify_init(int *s,int n);     //初始化堆操作
    void heapify_output();
private:
    void heapify_build();               //建立最大堆
    void heapify_max(int i);            
    int *a;                             //数组堆的首地址
    int n1;                             //数组的大小的上限
    int n2;                             //已使用堆的大小
};

heapify::heapify(int n)
{
    a=new int[n];
    n1=n;
}

void heapify::heapify_max(int i)                      // 比较节点和节点的左右节点,看是否节点是最大的,如果不是则将节点值置为最大
{
    int left=2*i+1,right=2*i+2,largest,key;           //置换后,查看被交换的左节点或者右节点是否满足最大堆的要求,如果不满足则调整
    largest=i;
    if(left<=n2&&*(a+left)>*(a+i))
        largest=left;
    if(right<=n2&&*(a+right)>*(a+largest))
        largest=right;
    if(i!=largest){
        key=*(a+largest);
        *(a+largest)=*(a+i);
        *(a+i)=key;
        heapify_max(largest);
    }
}

void heapify::heapify_build()               //堆的建立,调整0-n2/2节点使其满足最大堆的属性,因为n2/2之后的元素都是叶子节点,其为自身      
{
    for(int i=n2/2;i>=0;i--)
        heapify_max(i);
}

void heapify::heapify_init(int *s,int n)
{
    n2=n;
    if(n>n1){
        printf("overflow");
        exit(0);
    }
    for(int i=0;i<n;i++)
        *(a+i)=*(s+i);
    heapify_build();
}

void heapify::heapify_output()
{
    for(int i=0;i<n2;i++)
        cout << *(a+i) << ' ';
    cout <<endl;
}

void main()
{
    int a[20];
    heapify myheapify(20);
    for(int i=0;i<20;i++){
        cin >> *(a+i);
        if(*(a+i)==-1)
            break;
    }
    myheapify.heapify_init(a,i);
    myheapify.heapify_output();
}

怎么感觉就是 在用C写程序呢 ?
搜索更多相关主题的帖子: void private include public 
2013-04-27 13:56
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:7 
我的见解:
C是面对过程的,C++是面对对象的
C++更复杂,功能相对更强大,某些方面也更随意。
C语言可以说是一种入门语言,只要精通了一种语言,则一通百通。显而易见,C++是不适合用来入门的。若要学编程,从C语言入手,是个不错的选择。
C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。
c++主要是其对类的封装、多态和继承,这是c语言不能比拟的,你的程序中只设计一点类的基础,所以没太多差别。

Maybe
2013-04-27 14:18
fanpengpeng
Rank: 8Rank: 8
来 自:南极洲
等 级:蝙蝠侠
威 望:7
帖 子:299
专家分:849
注 册:2013-2-1
收藏
得分:7 
  楼主好像很纠结的样子……

人生是一场错过 愿你别蹉跎
2013-04-27 14:45
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:7 
以下是引用邓士林在2013-4-27 14:18:17的发言:

我的见解:
C是面对过程的,C++是面对对象的
C++更复杂,功能相对更强大,某些方面也更随意。
C语言可以说是一种入门语言,只要精通了一种语言,则一通百通。显而易见,C++是不适合用来入门的。若要学编程,从C语言入手,是个不错的选择。
C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。
c++主要是其对类的封装、多态和继承,这是c语言不能比拟的,你的程序中只设计一点类的基础,所以没太多差别。

楼主的代码,我没怎么看...
不过对于你的见解,我想说两句

没有语言是什么的说法,我觉得
C一样可以用来写面向对象
C++也可以用来写面向过程,甚至在c11中,c++可以写面向函数...
只是说某种语言更适合写面向XX的代码而已...
所以最后那句,C不能比拟,只是没人这么写而已...

C++比起C,我觉得C更加随意...而且,C是我见过最不适合做入门,学习曲线最陡的语言...

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-04-27 15:23
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
回复 4楼 peach5460
仁者见仁智者见智吧

Maybe
2013-04-27 22:50
快速回复:第一个C++ 程序 类的定义
数据加载中...
 
   



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

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