标题:声明包含10个元素的Point对象数组,并计算距离最大两点之间的距离 。运行结 ...
只看楼主
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
结帖率:85.71%
 问题点数:0 回复次数:6 
声明包含10个元素的Point对象数组,并计算距离最大两点之间的距离 。运行结果不正确,目测是循环语句有错,但是不知道怎么改,求指教
//仿照教材p198页面,声明包含10个元素的Point对象数组,并计算距离最大两点之间的距离。
#include <iostream>
#include <cmath>
using namespace std;

class Point
{
    public:
        Point(float x=0,float y=0):x(x),y(y){}
        
        float getX() const
        {
            return x;
        }
        float getY() const
        {
            return y;
        }
   
    private:
        float x,y;
};

float distance(const Point points[],int nPoint)
{
    int i,j,k;
    int length[100];
    float x,y;
    float max=length[0];
   
for(k=0;k<100;k++)
{
    for(i=0;i<nPoint;i++)
    {
        for(j=0;(j!=i)&&j<nPoint;j++)
        {
        
            x=points[i].getX()-points[j].getX();
            y=points[i].getY()-points[j].getY();
            length[k]=sqrt(x*x+y*y);
        }        
    }
   
    if(max<length[k])
    max=length[k];
}

return max;
}

int main()
{
    Point p[10]={Point(1,2),Point(2,3),Point(3,4),Point(4,5),Point(5,6),Point(6,7),Point(7,8),Point(8,9),Point(9,10),Point(10,11)};
    float len=distance(p,10);
    cout<<"the max distance is:"<<len<<endl;
    return 0;
}
搜索更多相关主题的帖子: distance private include public return 
2015-04-11 17:08
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
得分:0 
for(k=0;k<100;k++)
{
    for(i=0;i<nPoint;i++)
    {
        for(j=0;(j!=i)&&j<nPoint;j++)
        {
为什么要写三个循环???什么逻辑???

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2015-04-11 21:59
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
得分:0 
应该是:
for(i=0;i<nPoint;i++)
   for(j=nPoint;j>i;j--)
2015-04-12 07:02
zcdjt
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:99
专家分:181
注 册:2014-9-9
得分:0 
for(i=0;i<nPoint;i++)
    {
        for(j=i+1;j<nPoint;j++)
        {
           x=(abs)(points[i].getX()-points[j].getX());
           y=(abs)(points[i].getY()-points[j].getY()); //取整
取第一个x值和第二个x值
你的if语句有问题要有个循环比较所有可能的结果

今朝醉
2015-04-12 22:22
bravetang
Rank: 1
等 级:新手上路
帖 子:11
专家分:8
注 册:2015-4-2
得分:0 
问题1:length[100]数组定义时最好初始化一下,否则在某些编译器下可能会产生垃圾数据,影响后面查询数组中的最大值。
 问题2:循环嵌套错误,在计算点与点之间的距离的时候,不能够同时寻找数组的最大值。否则在每次对数组进行遍历时,都会重新对数组赋值,严重的逻辑错误。
 问题3:似乎遍历所以点的逻辑也有错误。
我这写了一个完整的代码,经测试,貌似可行,仅供参考,希望能帮到你:
//
//  main.cpp
//  Point
//
//  Created by apple on 15/4/12.
//  Copyright (c) 2015年 BraveTang. All rights reserved.
//

#include <iostream>
#include <cmath>
using namespace std;

class Point{
    float x;
    float y;
public:
    Point(float x=0,float y=0):x(x),y(y){}
    float getX()
    {
        return x;
    }
    float getY()
    {
        return y;
    }
};
float distanceMax( Point p[],int nPoint)
{
    float length[50]={0};
//    for (int r=0; r< sizeof(length)/sizeof(float); r++) {
//        cout << length[r]<< " ";
//    }
    float x,y;
    float max = length[0];
    int k =0;
    for (int i = 0; i < nPoint; i++) {
        for (int j=i+1;j < nPoint;j++) {
                x = abs(p[i].getX() - p[j].getX());
               // cout << x << endl;
                y = abs(p[i].getY() - p[j].getY());
               // cout << y << endl;
                length[k++] =sqrt(x*x+y*y);
                //cout << length[k-1] << endl;
        }
    }
    for (int n = 0 ; n<sizeof(length)/sizeof(float); n++) {
        if (max < length[n]) {
            max = length[n];
        }
        //cout << length[n] << ",";
    }
    return max;
}
int main(int argc, const char * argv[]) {
    // insert code here...
    //std::cout << "Hello, World!\n";
     Point p[10]={Point(0,1),Point(2.4,5),Point(2,5),Point(4,5),Point(5,6),Point(10010,7),Point(7,8),Point(8,9),Point(9,10),Point(4,4)};
    float len=distanceMax(p,10);
    cout<<"the max distance is:"<<len<<endl;
    return 0;
}
2015-04-12 23:37
mosquiyan
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2014-12-12
得分:0 
sizeof(length)/sizeof(float)是什么意思?
2015-04-13 18:32
bravetang
Rank: 1
等 级:新手上路
帖 子:11
专家分:8
注 册:2015-4-2
得分:0 
回复 6楼 mosquiyan
计算数组元素的个数。
2015-04-13 21:50



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-443858-1-1.html




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

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