搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 1062|回复: 18
收起左侧

错错错~来改错【第二集】

[复制链接]

该用户从未签到

7

主题

6

好友

1499

积分

Continue

积分
1499
发表于 2013-4-8 11:14:41 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
#include<stdio.h>
#include<stdlib.h>
#include"point.h"
#include<stdbool.h>
struct TreereeNode{
int dim,index;
bool left,right;
}tree[MAXN];
int sortDimension;
bool compare(int x,int y){
return point[x].p[sortDimension]<point[y].p[sortDimension];
}

它说我compare有错~不是说用<stdbool.h>这个头文件后可以用bool型么

签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

该用户从未签到

17

主题

33

好友

9883

积分

序章

积分
9883
发表于 2013-4-8 11:22:53 来自手机 | 显示全部楼层
慢慢研究
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

127

好友

2万

积分

技术宅认证程序员

重度中二患者

积分
28325
发表于 2013-4-8 12:03:24 | 显示全部楼层
你那个结构体里都没报错肯定不是bool的问题了。。。
等死星人
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

6

好友

1499

积分

Continue

积分
1499
 楼主| 发表于 2013-4-8 12:29:43 | 显示全部楼层
本帖最后由 weeken2013 于 2013-4-8 13:12 编辑

buildTree.c: In function ‘buildTree’:
buildTree.c:33: warning: passing argument 4 of ‘qsort’ from incompatible pointer type
/usr/include/stdlib.h:761: note: expected ‘__compar_fn_t’ but argument is of typ

我qsort这么写的
qsort(pointSet[depth], pointNumber[depth], sizeof(pointSet[0][0]),compare);
不是说我compare有问题么

PS:还有源代码是写用sort的
sort(pointSet[depth], pointSet[depth] + pointNumber[depth], compare);
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

127

好友

2万

积分

技术宅认证程序员

重度中二患者

积分
28325
发表于 2013-4-8 14:50:32 | 显示全部楼层
compare参数和返回值是有要求的。。。必须满足返回值int型,参数两个const void*。。没用过sort
等死星人
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

6

好友

1499

积分

Continue

积分
1499
 楼主| 发表于 2013-4-8 17:08:52 | 显示全部楼层
foodszhu 发表于 2013-4-8 14:50
compare参数和返回值是有要求的。。。必须满足返回值int型,参数两个const void*。。没用过sort ...

确实是这个问题~但这compare里边我该怎么写啊~这是固定格式?
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

30

主题

127

好友

2万

积分

技术宅认证程序员

重度中二患者

积分
28325
发表于 2013-4-8 17:14:58 | 显示全部楼层
如果是简单的int型升序排列
[mw_shl_code=c,true]int cmp(const void *a, const void *b){
    return *(int*)a - *(int*)b;
}[/mw_shl_code]
百度百科上说的挺详细的。。。自己看吧。。。没看懂的再来问吧。。。
等死星人
回复 支持 反对

使用道具 举报

该用户从未签到

11

主题

37

好友

1万

积分

第一章

积分
18487
发表于 2013-4-9 10:51:16 | 显示全部楼层
QuickSort。
[mw_shl_code=c,true]int Sort(int *a,int left,int right)
{
    int temp;
    if(left>=right) return;
    int l=left,r=right;
    int key=a[left];
    while(l<r)
    {
        while(l<r&&a[r]>key)
        r--;
        while(l<r&&a[l]<=key)
        l++;
        temp=a[r],a[r]=a[l],a[l]=temp;
    }
    temp=a[l],a[l]=a[left],a[left]=temp;
    Sort(a,left,l-1);
    Sort(a,l+1,right);
}[/mw_shl_code]
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

6

好友

1499

积分

Continue

积分
1499
 楼主| 发表于 2013-4-9 21:23:57 | 显示全部楼层
本帖最后由 weeken2013 于 2013-4-9 21:41 编辑
foodszhu 发表于 2013-4-8 17:14
如果是简单的int型升序排列

[mw_shl_code=c,true]int compare(const void *a,const void *b){
        struct Point *aa=(Point *)a;
        struct Point *bb=(Point *)b;
        return(((aa->p[sortDimension])>(bb->p[sortDimension]))?-1:1);
}[/mw_shl_code]



buildTree.c: In function ‘buildTree’:
buildTree.c:35: error: ‘compare’ undeclared (first use in this function)
buildTree.c:35: error: (Each undeclared identifier is reported only once
buildTree.c:35: error: for each function it appears in.)
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

25

主题

59

好友

8779

积分

序章

积分
8779
发表于 2013-4-9 21:33:48 | 显示全部楼层
MAXN define 了沒有啊..
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

25

主题

59

好友

8779

积分

序章

积分
8779
发表于 2013-4-9 21:35:40 | 显示全部楼层
weeken2013 发表于 2013-4-9 21:23
[mw_shl_code=c,true]int compare(const void *a,const void *b){
        struct Point *aa=(Point *) ...

乖乖的寫if的話會怎麼樣
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

6

好友

1499

积分

Continue

积分
1499
 楼主| 发表于 2013-4-9 21:41:53 | 显示全部楼层
terry182 发表于 2013-4-9 21:33
MAXN define 了沒有啊..

定义了~
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

6

好友

1499

积分

Continue

积分
1499
 楼主| 发表于 2013-4-9 21:47:59 | 显示全部楼层
terry182 发表于 2013-4-9 21:35
乖乖的寫if的話會怎麼樣

[mw_shl_code=c,true]
#include<stdio.h>
#include<stdlib.h>
#include"point.h"
#include<stdbool.h>
struct TreereeNode{
        int dim,index;
        bool left,right;
}tree[MAXN];

int sortDimension;
int compare(const void *a,const void *b){
        struct Point *aa=(Point *)a;
        struct Point *bb=(Point *)b;
         return(((aa->p[sortDimension])>(bb->p[sortDimension]))?-1:1);
}[/mw_shl_code]



buildTree.c: In function ‘compare’:
buildTree.c:12: error: ‘Point’ undeclared (first use in this function)
buildTree.c:12: error: (Each undeclared identifier is reported only once
buildTree.c:12: error: for each function it appears in.)
buildTree.c:12: error: expected expression before ‘)’ token
buildTree.c:13: error: expected expression before ‘)’ token
Point我在前边point.h里有啊,怎么破~~
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

6

好友

1499

积分

Continue

积分
1499
 楼主| 发表于 2013-4-9 21:49:54 | 显示全部楼层
weeken2013 发表于 2013-4-9 21:23
[mw_shl_code=c,true]int compare(const void *a,const void *b){
        struct Point *aa=(Point *) ...

的确有中文字符~不好意思啊~
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

25

主题

59

好友

8779

积分

序章

积分
8779
发表于 2013-4-9 23:16:18 | 显示全部楼层
weeken2013 发表于 2013-4-9 21:47
[mw_shl_code=c,true]
#include
#include

定義了的話還需要打struct 嗎? (我是不太清楚啦
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-5-1 23:20 , Processed in 0.112390 second(s), 25 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表