?? distance.cpp
字號:
/* distance.cpp 讀取城市坐標信息,計算兩兩城市之間的距離,生成距離文件*/
#include <iostream>
#include <fstream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
//申明和初始化變量
char city_name[20];
float city_x[20], city_y[20];
float city_distance[20][20];
float max_distance, min_distance;
int i=0, k, j;
string filename;
ifstream sensor;
ofstream inform;
//請求用戶輸入文件名
cout<<"enter the name of the data file:(it should be 'data.txt' here) ";
cin>>filename;
//打開文件讀取數據信息
sensor.open(filename.c_str());
if(sensor.fail())
{
cout<<"Error opening input file\n";
}
else
{
//沒有到達文件末尾時循環讀取數據
while(!sensor.eof())
{
sensor>>city_name[i]>>city_x[i]>>city_y[i];
i++;
}
}
//計算任意兩城市之間的距離,求出最大、最小距離
//初始化最大、最小距離值
max_distance=sqrt(pow(city_x[1]-city_x[0],2)+pow(city_y[1]-city_y[0],2));
min_distance=max_distance;
for(k=0;k<i-1;k++)
{
for(j=k+1;j<i;j++)
{
city_distance[k][j]=sqrt(pow(city_x[j]-city_x[k],2)+pow(city_y[j]-city_y[k],2));
if(max_distance<city_distance[k][j])
{
max_distance=city_distance[k][j];
}
if(min_distance>city_distance[k][j])
{
min_distance=city_distance[k][j];
}
}
}
for(k=0;k<i;k++)
{
city_distance[k][k]=0;
for(j=0;j<k;j++)
{
city_distance[k][j]=city_distance[j][k];
}
}
//生成距離文件distance.txt, 文件的開始一行顯示的是最大、最小距離
//第i+1行顯示的是:城市i和其他各城市之間的距離
filename="distance.txt";
//打開文件
inform.open(filename.c_str());
//設置輸出格式
inform.setf(ios::fixed);
inform.precision(3);
//寫入最大、最小距離信息
inform<<max_distance<<' '<<min_distance<<endl;
//寫入全部距離信息
for(k=0;k<i;k++)
{
for(j=0;j<i;j++)
{
inform<<city_distance[k][j]<<' ';
}
inform<<endl;
}
//關閉文件
inform.close();
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -