人工智能导航系统文件数据的识别

#include iostream
#include fstream//即写入、读出的时候要用到这个头文件
#include string
#include <stdlib.h>//标准库头文件
#define num 128//网格数据大小
using namespace std;


bool isPeak(int grid[num][num],int r, int c);
void extremes(int grid[num][num], int nrows, int ncols);


int main (void){ 
    int nrows,ncols;//行,列
    int map[num][num];
    string filename;//文件名
    ifstream file;//建立一个文件流对象

    cout<<"请输入文件名:\n";
    cin>>filename;
    //c_str是string类的一个函数,可以把string类型变量转换成char*变量open()要求的是一个char*字符串
    file.open(filename.c_str());
    /*EOF是baiEnd Of File 的缩写,表示“文件结束”。
    从输入流读取数据,如果到达文件末尾(遇到文件结束符),eof函数值为非零值(表示真),如果未到文件结尾则为0(表示假)。
    eof 函数用来判断是否到达文件结尾;
    fail()用来判断一个流是否“坏”掉了。如果failbit、badbit中任意一种或两种被设置,则fail()返回true,否则返回false;
    调用方式cin.fail();*/
    if(file.fail()){
        cout<<"打开文件出错.\n";
        exit(1);


    }

    file>>nrows>>ncols;

    if(nrows > num || ncols > num ){
        cout<<"网格太大,调整程序.\n";
        exit(1);

    }
    //从数据文件读数据到数组
    for(int i=0; i<nrows; i++){
        for(int j=0; j<ncols; j++){
            file>>map[i][j];
        }

    }
    //判断并打印峰值位置
    for(int i=1; i<nrows-1; i++){
        for(int j=1; j<ncols-1; j++){
            if(isPeak(map,i,j)){
                cout<<"峰点出现在行:"<< i << "列" << j << endl;

                
            }
        }
    }
    
    extremes(map, nrows, ncols);

    //关闭文件
    file.close();

    system("pause");
    
    
    return    0;
}
//grid 网格
bool isPeak(int grid[num][num],int r, int c){
    //八个位置峰点的判断
    if((grid[r][c] > grid[r-1][c])&&(grid[r][c] > grid[r - 1][c-1])&&
        (grid[r][c] > grid[r+1][c])&& (grid[r][c] > grid[r - 1][c+1])&&
        (grid[r][c] > grid[r][c-1])&& (grid[r][c] > grid[r + 1][c + 1]) &&
        (grid[r][c] > grid[r][c+1])&& (grid[r][c] > grid[r + 1][c -1])){
            return true;
    }else{
        return false;
    }


}

void extremes(int grid[num][num], int row, int column){
    int max = grid[0][0];
    int min = grid[0][0];
    for (int r = 0; r < row; r++)
    {
        printf("\n");
        for (int c = 0; c < column; c++)
        {
            printf("%d", grid[r][c]);//打印每一个元素

            if (max <grid[r][c])
            {
                max = grid[r][c];                 
            }
        
            if (min >grid[r][c])
            {
                min = grid[r][c];
            }
        }    
    }
    cout << endl <<"海拔的最大值" << max << endl << "海拔的最小值" << min ;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值