标题:一道应用题目的求解,请各位指点更为简便的方法
取消只看楼主
chenxiao9753
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-10
结帖率:0
已结贴  问题点数:20 回复次数:1 
一道应用题目的求解,请各位指点更为简便的方法
已知条件:
struct point
{
    float x;
    float y;
}point1;
输入N个二维数字(x,y);在二维坐标下划分了3*5个区域(1-15),区域在x坐标和y坐标都从零开始,间隔为2,求落在这15个区域内点数最多的区域和落在这15个区域内点数最多的区域最多的点数。
 
 


例如:输入N:7
输入N个二维数字x和y:
3,3
2.5,3.5
3.1,2.8
3.1,3.1
7,3
2.6,3.6
9,5
得出结果如下:
点数最多的区域是:7,max=5

以下是我的方法:
程序代码:
#include<stdio.h>
struct point
{
    float x;
    float y;
}point1;

main()
{
    int i,j,n,N,max=0,row,colum,a[6][10];
    int b[3][5]={{11,12,13,14,15},{6,7,8,9,10},{1,2,3,4,5}};
   
    /*初始化*/
    for(i=0;i<6;i=i+2)
    {
        for(j=0;j<10;j=j+2)
        {
            a[i][j]=0;
        }
    }

    /*输入N个数*/
    printf("输入N:\n");
    scanf("%d",&N);
    printf("输入N个二维数字x和y:\n");
    for(n=0;n<N;n++)
    {
        scanf("%f,%f",&point1.x,&point1.y);
   
        /*统计落在区域的点数*/
        for(i=0;i<6;i=i+2)
        {
            for(j=0;j<10;j=j+2)
            {
                if((point1.x>=j)&&(point1.x<j+2)&&(point1.y>=i)&&(point1.y<i+2))
                {
                    a[i][j]++;
                }
            }
        }
    }
   
    /*求出落在区域点数最大的数值*/
    for(i=0;i<6;i=i+2)
    {
        for(j=0;j<10;j=j+2)
        {
            if(a[i][j]>max)
            {
                max=a[i][j];
                row=i/2;
                colum=j/2;
            }
        }
    }
    printf("点数最多的区域是:%d,max=%d.\n",b[row][colum],max);
}


求更简便的方法

搜索更多相关主题的帖子: 应用题 从零开始 
2011-05-14 17:56
chenxiao9753
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-5-10
得分:0 
回复 2楼 小虎小妮
谢谢建议,可有另一种方法判断是否输入的数落在区域内?
2011-05-14 19:52



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




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

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