我不知道你整個程序想怎麽用這些數據,隨便寫一個例子:
程序代码:
/*
我有一个材料模型,是由几种材料构成的,比如有三种材料组成,这三种材料的密度,熔点,沸点都是不同的,程序运行到这里的时候,在不同
区域我要选择不同的材料,并且把相应材料的属性带进去。我想建个材料库0、1、2,把材料的密度,熔点,沸点放在材料库0中,把B料的密度,
熔点,沸点放在材料库1,把C料的密度,熔点,沸点放在材料库0中,用的时候直接调用。应该怎样做呢?0<x<3,0<y<5是材料A,3<x<5,0<y<5是
材料B,5<x<10,0<y<5是材料C,请问大家知道怎么做吗?谢谢!
我有一个材料模型,是由几种材料构成的,比如有三种材料组成,这三种材料的密度,熔点,沸点都是不同的,而这些量在程序中都必须用到。我
想让程序运行的时候,先根据(x,y)坐标,判断是哪种材料,然后再取相应材料的密度,熔点,沸点进行计算。然后再判断,再取值计算。这样,
就相当于材料是坐标的函数,坐标确定了,材料就确定了,即材料的密度,熔点,沸点就确定了,不知道说能理解吗?
谢谢!
[/color][/color]*/
#include <iostream>
#include <cstring>
// 範圍結構
struct Region
{
double X1; // x 左區間
double X2; // x 右區間
double Y1; // y 左區間
double Y2; // y 右區間
Region() {};
Region(double x1, double x2, double y1, double y2)
{
X1 = x1;
X2 = x2;
Y1 = y1;
Y2 = y2;
}
};
// 坐標結構
struct Coord
{
double X;
double Y;
Coord() : X(0.0), Y(0.0) {};
Coord(double x, double y) : X(x), Y(y) {};
};
// 材料類
struct Material
{
std::string Name; // 名稱
double Density; // 密度
double BoilingPoint; // 沸點
double MeltingPoint; // 熔點
Region SelectRegion; // 選擇範圍
Material(std::string name, double density, double boiling_point, double melting_point, Region region)
{
Name = name;
Density = density;
BoilingPoint = boiling_point;
MeltingPoint = melting_point;
SelectRegion = region;
}
bool In_Region(Coord coord) const
{
return (coord.X >= SelectRegion.X1) && (coord.X <= SelectRegion.X2) && (coord.Y >= SelectRegion.Y1) && (coord.Y <= SelectRegion.Y2);
}
void Show_Attribute(void) const
{
std::cout << Name.c_str() << std::endl;
std::cout << "密度(10^3kg/m^3): " << Density << std::endl;
std::cout << "沸點(θ/℃): " << BoilingPoint << std::endl;
std::cout << "熔點(θ/℃): " << MeltingPoint << std::endl;
}
};
static const Material materials_list[] = {
{ std::string("銅"), 8.954, 2567.0, 1083.4, Region(0.0, 3.0, 0.0, 5.0) },
{ std::string("鐵"), 7.897, 2750.0, 1535, Region(3.0, 5.0, 0.0, 5.0) },
{ std::string("鋁"), 2.707, 2467.0, 660.37, Region(5.0, 10.0, 0.0, 5.0) }
};
int main(void)
{
Coord point(4, 4);
for (int index = 0; index < _countof(materials_list); ++index)
{
if (materials_list[index].In_Region(point))
{
std::cout << "點(" << point.X << "," << point.Y << ") 應選擇材料: " << std::endl;
materials_list[index].Show_Attribute();
break;
}
}
rewind(stdin);
fgetc(stdin);
return EXIT_SUCCESS;
}
關鍵是建立那個materials_list數組(其實應該用vector),從磁盤文件中讀入,那是數據庫,然後你想怎麽查,自己看著辦,後面的不代勞。
再補充一下:在邏輯上,材料類中是不應該存在SelectRegion字段的,但我不知道你整個程序將要怎麽用,也不是替你把程序做完善,所以就順手放在這裡了(甚至連模塊文件都不分割,全擠在一起)。
[
本帖最后由 TonyDeng 于 2014-4-24 23:32 编辑 ]