hastiam
پنج شنبه 28 آذر 1392, 17:00 عصر
سلام دوستان
من میخوام برنامه زیر رو به یک کلاس Library تبدیل کنم و از این کلاس هرجا که خواستم استفاده کنم من با کلاس نویسی ++C آشنایی زیادی ندارم به خاطر همین نمیدونم چطور این کار رو انجام بدم؟
لطفا راهنماییم کنید. ممنون.
double speed, tr_power, max_point, mid_point;
double A, B, C;
double LOW, MED, HIGH;
string value[3] = {"Low", "Medium", "High"};
int state[3][3] = {{1, 0, 0}, {2, 1, 0}, {2, 2, 1}};
double triangle(double X){
if (X >= A && X <= B) return (X - A) / (B - A);
if (X >= B && X <= C) return (C - X) / (C - B);
return 0.0;
}
double low_sagittal(double X){
if (X <= A) return 1.0;
if (X >= B) return 0.0;
double y = (X - mid_point) * (X - mid_point) - mid_point / 4.0 + 1.0;
return y;
}
double high_sagittal(double X){
if (X >= C) return 1.0;
if (X <= B) return 0.0;
double y = (X - mid_point) * (X - mid_point) - mid_point / 4.0 + 1.0;
return y;
}
int get_state(double memb[3]){
if (memb[0] > memb[1] && memb[0] > memb[2]) return 0;
if (memb[1] > memb[0] && memb[1] > memb[2]) return 1;
if (memb[2] > memb[0] && memb[2] > memb[0]) return 2;
return rand() % 3;
}
int main(int argc, char* argv[]){
if (argc < 4) printf("Please Speed, trPower and maxPoint correctly...\n");
else {
double temp[3];
for (int i = 0;i < 3;++i){
string s(argv[i + 1]);
istringstream ss(s);
ss >> temp[i];
}
speed = temp[0];
tr_power = temp[1];
max_point = temp[2];
mid_point = max_point / 2.0;
A = mid_point / 2.0;
B = mid_point;
C = 3.0 * mid_point / 2.0;
double tr_power_membership[3];
tr_power_membership[0] = low_sagittal(tr_power);
tr_power_membership[1] = triangle(tr_power);
tr_power_membership[2] = high_sagittal(tr_power);
double speed_membership[3];
speed_membership[0] = low_sagittal(speed);
speed_membership[1] = triangle(speed);
speed_membership[2] = high_sagittal(speed);
cout << tr_power_membership[0] << " " << tr_power_membership[1] << " " << tr_power_membership[2] << endl;
cout << speed_membership[0] << " " << speed_membership[1] << " " << speed_membership[2] << endl;
int s_state = get_state(speed_membership);
int t_state = get_state(tr_power_membership);
cout << value[t_state] << " " << value[s_state] << endl;
printf("%s\n", value[state[t_state][s_state]].c_str());
}
return 0;
}
من میخوام برنامه زیر رو به یک کلاس Library تبدیل کنم و از این کلاس هرجا که خواستم استفاده کنم من با کلاس نویسی ++C آشنایی زیادی ندارم به خاطر همین نمیدونم چطور این کار رو انجام بدم؟
لطفا راهنماییم کنید. ممنون.
double speed, tr_power, max_point, mid_point;
double A, B, C;
double LOW, MED, HIGH;
string value[3] = {"Low", "Medium", "High"};
int state[3][3] = {{1, 0, 0}, {2, 1, 0}, {2, 2, 1}};
double triangle(double X){
if (X >= A && X <= B) return (X - A) / (B - A);
if (X >= B && X <= C) return (C - X) / (C - B);
return 0.0;
}
double low_sagittal(double X){
if (X <= A) return 1.0;
if (X >= B) return 0.0;
double y = (X - mid_point) * (X - mid_point) - mid_point / 4.0 + 1.0;
return y;
}
double high_sagittal(double X){
if (X >= C) return 1.0;
if (X <= B) return 0.0;
double y = (X - mid_point) * (X - mid_point) - mid_point / 4.0 + 1.0;
return y;
}
int get_state(double memb[3]){
if (memb[0] > memb[1] && memb[0] > memb[2]) return 0;
if (memb[1] > memb[0] && memb[1] > memb[2]) return 1;
if (memb[2] > memb[0] && memb[2] > memb[0]) return 2;
return rand() % 3;
}
int main(int argc, char* argv[]){
if (argc < 4) printf("Please Speed, trPower and maxPoint correctly...\n");
else {
double temp[3];
for (int i = 0;i < 3;++i){
string s(argv[i + 1]);
istringstream ss(s);
ss >> temp[i];
}
speed = temp[0];
tr_power = temp[1];
max_point = temp[2];
mid_point = max_point / 2.0;
A = mid_point / 2.0;
B = mid_point;
C = 3.0 * mid_point / 2.0;
double tr_power_membership[3];
tr_power_membership[0] = low_sagittal(tr_power);
tr_power_membership[1] = triangle(tr_power);
tr_power_membership[2] = high_sagittal(tr_power);
double speed_membership[3];
speed_membership[0] = low_sagittal(speed);
speed_membership[1] = triangle(speed);
speed_membership[2] = high_sagittal(speed);
cout << tr_power_membership[0] << " " << tr_power_membership[1] << " " << tr_power_membership[2] << endl;
cout << speed_membership[0] << " " << speed_membership[1] << " " << speed_membership[2] << endl;
int s_state = get_state(speed_membership);
int t_state = get_state(tr_power_membership);
cout << value[t_state] << " " << value[s_state] << endl;
printf("%s\n", value[state[t_state][s_state]].c_str());
}
return 0;
}