visual studio c++ 2013 빌드 오류 해결방법 알려주실분!
-
게시물 수정 , 삭제는 로그인 필요
#pragma warning (disable:4996)
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double Loa_ = 228.5;
double Lwl_ = 222.6;
double Lbp_ = 219;
double B_ = 32.24;
double D_ = 20.2;
double Tmld_ = 12.2;
double Tscant_ = 14.0;
double Deadweight_ = 72500;
double Speed_ = 15.0;
double BHP_;
double NMCR_ = 14100. / 0.9;
double DMCR_;
double NCR_;
double SFOC_;
double TONpDAY_ = 38.1;
double CruisingRange_ = 20000;
double Cargo_ = 81618.0;
double Tfuel_ = 2600;
double fuel_ = 2500;
double Ballast_ = 28500;
double Ws_ = 10803.5;
double Wo_ = 1173.7;
double Wm_ = 1072.5;
double Fb_ = 5.8;
double Lh_ = 161.6;
double Cch_ = 0.775529;
double Cmd_ = 1;
double Cch_md = 0.775529;
double Cad_ = 540.815;
double Et_ = 0.98;
//double Tmld = 13.6;
double Tmld = 13.6;
double Tscant = 14.6;
double Cargo = 123834.2069;
double B = 0;
double V = 15.3;
double DeadWeight = 99900;//98100;//91793;//
double Cb = 0.84;
double NMCR1 = 23000 * 0.986842105 / 0.9 / 0.9;
double alpha = 0.003;
FILE * fp;
/*
L(m) 238.522034
B(m) 41.951851
D(m) 20.917022
Cb 0.852842
W(ton) 128093.154297
LWT(ton) 18221.247451
*/
/**********************************
g1 - penalty Function
param - double *x - 함수값.
return - double
**********************************/
double g1(double *x){
double result;
B = x[2];
Cb = x[3];
double NMCR;
if (NMCR1 != 0){
NMCR = NMCR1;
}
else{
NMCR = pow(x[0] * B*Tmld*Cb, 2. / 3.)*pow(V, 3) / Cad_ / Et_ *(1.2) / 0.9 / 0.9;
}
result = (
x[0] * B*Tmld*Cb*1.025*(1. + alpha)
-
(
(Ws_ / (pow(Lbp_, 1.6)*(B_ + D_)))*pow(x[0], 1.6)*(B + x[1])
+ (Wo_ / Lbp_ / B_)*x[0] * B
+ (Wm_ / NMCR_)*NMCR
+ DeadWeight
)
) / (x[0] * B*Tmld*Cb*1.025*(1. + alpha))
;
if (result > 0.000){
printf("g1-%.3f\n", result);
return result;
}
else return 0;
}
/**********************************
g1 - penalty Function
param - double *x - 함수값.
return - double
**********************************/
double g2(double *x){
double result;
B = x[2];
Cb = x[3];
double NMCR;
if (NMCR1 != 0){
NMCR = NMCR1;
}
else{
NMCR = pow(x[0] * B*Tmld*Cb, 2. / 3.)*pow(V, 3) / Cad_ / Et_ *(1.2) / 0.9 / 0.9;
}
result = (
x[0] * B*Tmld*Cb*1.025*(1. + alpha)
-
(
(Ws_ / (pow(Lbp_, 1.6)*(B_ + D_)))*pow(x[0], 1.6)*(B + x[1])
+ (Wo_ / Lbp_ / B_)*x[0] * B
+ (Wm_ / NMCR_)*NMCR
+ DeadWeight
)
) / (x[0] * B*Tmld*Cb*1.025*(1. + alpha))
;
if (-result > 0.000){
printf("g2-%.3f\n", result);
return -result;
}
else return 0;
}
/**********************************
g1 - penalty Function
param - double *x - 함수값.
return - double
**********************************/
double g3(double *x){
double result;
B = x[2];
Cb = x[3];
result = (x[0] / Lbp_*Fb_*1.0 + Tscant + 0.1 - x[1]) / x[1];
if (result > 0){
printf("g3-%.3f\n", result);
return result;
}
else return 0;
}
/**********************************
g1 - penalty Function
param - double *x - 함수값.
return - double -- 화물창 용적식..
**********************************/
double g4(double *x){
double result;
Cb = x[3];
B = x[2];
result = -(x[0] / Lbp_*Lh_*B*x[1] * Cch_*Cmd_) / Cargo + 1;
printf("화물창 용적- %f\n", x[0] / Lbp_*Lh_*B*x[1] * Cch_*Cmd_);
if (result > 0){
printf("g4-%f-----화물창 용적- %f\n", result, x[0] / Lbp_*Lh_*B*x[1] * Cch_*Cmd_);
return result;
}
else return 0;
}
//Cb 제약식
double g5(double *x){
double result;
Cb = x[3];
B = x[2];
result = Cb / (x[0] / B) / 0.15 - 1;
if (result > 0){
printf("g5-0.3f\n", result);
return result;
}
else return 0;
}
//Cb제약식 2
double g6(double *x){
double result;
Cb = x[3];
B = x[2];
result = (Cb - 0.125*atan((23 - 100 * V*0.5144 / sqrt(9.8*x[0])) / 4)) / 0.70 - 1;
if (result > 0){
printf("g6-%.3f\n", result);
return result;
}
else return 0;
}
double g7(double *x){
double result;
Cb = x[3];
B = x[2];
result = x[0] / 239.606 - 1;
if (result > 0){
printf("g7-%.3f\n", result);
return result;
}
else return 0;
}
double g8(double *x){
double result;
Cb = x[3];
B = x[2];
result = B / Tmld / 3.5 - 1;
if (result > 0){
printf("g8-%.3f\n", result);
return result;
}
result = B / Tmld / 3.3 - 1;
if (-result > 0){
printf("g8-%.3f ", -result);
return -result;
}
else return 0;
}
double g9(double *x){
double result;
Cb = x[3];
B = x[2];
result = x[0] / x[1] / 12.4 - 1;
if (result > 0){
printf("g9-%.3f\n", result);
return result;
}
result = x[0] / x[1] / 9.8 - 1;
if (-result > 0){
printf("g9-%.3f ", -result);
return -result;
}
else return 0;
}
/**********************
x[0] - L
x[1] - D
x[2] - B
x[3] - Cb
*********************/
/**********************************
function - object Function
param - double *x - 함수값.
double *_result - return 값의 포인터 -resurved
double r
return - double
**********************************/
double function(double *x, double *_result, double r){
//x[2]=0.82;
B = x[2];
Cb = x[3];
double result;
double Ws = (Ws_ / (pow(Lbp_, 1.6)*(B_ + D_)))*pow(x[0], 1.6)*(B + x[1]);
double Wo = (Wo_ / Lbp_ / B_)*x[0] * B;
double Wsi = Ws + (0.9)*pow(Ws, 0.75);
double NMCR = pow(x[0] * B*Tmld*Cb, 2. / 3.)*pow(V, 3) / Cad_ / Et_ *(1.2) / 0.9 / 0.9;
if (NMCR1 != 0){
NMCR = NMCR1;
}
// printf("**%f**%f,%f",NMCR,x[0],x[1]);
result = (200 * pow(Wsi, 2. / 3.)*pow(x[0], 1. / 3.) / Cb + 1100 * pow(Wo, 2. / 3.)
+ 120 * pow(NMCR, 0.82)) * 20
+ 450 * Wsi + 4000 * pow(Wo, 0.95) + 2500 * pow(NMCR, 0.82);
result = result *(1 + 1. / 9.);
result = result + r*(g1(x) + g2(x) + g3(x) + g4(x) + g6(x) + g7(x) + g9(x));//+g8(x)
return result;
}
/**********************************
Local_Pattern_Search - penalty Function
param - double (*fn)(double *x,double *result,double r)
double r
double *del, - 이동폭.
double* x, -초기값
double fmin_pre, - 기존 함수값.
int variables_no -변수 갯수.
return - double 새로운 함수값..
**********************************/
double Local_Pattern_Search(double(*fn)(double *x, double *result, double r), double r, double *del, double* x, double fmin_pre, int variables_no)
{
double * temp_x = new double[variables_no];
double fmin, temp_function_value;
int i;
fmin = fmin_pre;
for (i = 0; i < variables_no; i++) temp_x[i] = x[i];
for (i = 0; i < variables_no; i++){
temp_x[i] = x[i] + del[i];
temp_function_value = fn(temp_x, NULL, r);
if (temp_function_value < fmin){
fmin = temp_function_value;
}
else {
del[i] = 0.0 - del[i];
temp_x[i] = x[i] + del[i];
temp_function_value = fn(temp_x, NULL, r);
if (temp_function_value < fmin){
fmin = temp_function_value;
}
else{
temp_x[i] = x[i];
}
}
}
for (i = 0; i< variables_no; i++){
x[i] = temp_x[i];
}
delete[] temp_x;
return fmin;
}
/**********************************
HJ - Hook And Jeeves.
param - double (*fn)(double *x,double *result,double r)
double r
double *del, - 이동폭.
double* x, -초기값
int variables_no -변수 갯수.
return - double 새로운 함수값..
**********************************/
double HJ(double(*fn)(double *_x, double *_result, double r), double* _x, double *del, double r, int varN){
double* nowX = new double[varN];
double* beforeX = new double[varN];
double* globalX = new double[varN];
double tempResult, tempResult2;
int count = 0;
double result;
int i;
for (i = 0; i < varN; i++) beforeX[i] = nowX[i] = _x[i];
tempResult = function(_x, NULL, r);
printf("start HJ\n 0 -- 1 Process \n A -- PrintResult\n ");
fprintf(fp, "L,T,B,Cb,Value-%d\n", 1);
do{
printf("\n\nnow.. L-%f,D-%f,B-%f,Cb=-%f,Value-%f\n", nowX[0], nowX[1], nowX[2], nowX[3], tempResult);
fprintf(fp, "%f,%f,%f,%f,%f\n", nowX[0], nowX[1], nowX[2], nowX[3], tempResult);
scanf("%f", &result);
tempResult2 = Local_Pattern_Search(fn, r, del, nowX, tempResult, varN);
if (tempResult2 < tempResult){
tempResult = tempResult2;
for (i = 0; i < varN; i++) globalX[i] = 2 * nowX[i] - beforeX[i];
tempResult2 = function(nowX, NULL, r);
if (tempResult >tempResult2){
for (i = 0; i < varN; i++) beforeX[i] = nowX[i];
for (i = 0; i < varN; i++) nowX[i] = globalX[i];
tempResult = tempResult2;
}
else{
for (i = 0; i < varN; i++) beforeX[i] = nowX[i];
}
if (!(tempResult2>0)) {
for (i = 0; i < varN; i++) _x[i] = nowX[i];
return tempResult;
}
}
else{
for (i = 0; i< varN; i++) del[i] = del[i] / 2;
for (i = 0; i < varN; i++) beforeX[i] = nowX[i];
if (++count == 50) {
for (i = 0; i < varN; i++) _x[i] = nowX[i];
return tempResult;
}
}
} while (1);
}
/**********************************
main - Main Function
param - none
return - none
**********************************/
void main()
{
double x[4];
double result;
double del[4] = { 1, 0.5, 0.5, 0.01 };
double r = 100000000;
fp = fopen("Z:\\My Documents\\result.txt", "w");
//초기값.. design
/*
x[0]= 230;
x[1]= 20;
x[2] =35;
x[3] =0.89;
*/
//초기값 scantling
/*
x[0]= 236;
x[1]= 21;
x[2] =40;
x[3] =0.85;
*/
x[0] = 236;
x[1] = 21;
x[2] = 42;
x[3] = 0.83;
//계산
result = HJ(function, x, del, r, 4);
// 계산 결과 출력.
double NMCR = pow(x[0] * B*Tmld*Cb, 2. / 3.)*pow(V, 3) / Cad_ / Et_ *(1.2) / 0.9 / 0.9;
printf("**********Result********\nL=%f,D=%f,Cb=%f,Value=%f\n", x[0], x[1], Cb, result);
fprintf(fp, "L,D,B,Cb,Value\n");
fprintf(fp, "%f,%f,%f,%f,%f\n", x[0], x[1], x[2], x[3], result);
fprintf(fp, "W(ton),LWT(ton),Fb(m),Cargo,NMCR(BHP),NMCR(PS)\n");
fprintf(fp, "%f,%f,%f,%f,%f,%f\n"
, (x[0] * B*Tmld*Cb*1.025*(1. + alpha))
, (Ws_ / (pow(Lbp_, 1.6)*(B_ + D_)))*pow(x[0], 1.6)*(B + x[1])
+ (Wo_ / Lbp_ / B_)*x[0] * B
+ (Wm_ / NMCR_)*NMCR
, x[0] / Lbp_*Fb_
, x[0] / Lbp_*Lh_*B*x[1] * Cch_*Cmd_
, NMCR1
, NMCR1*1.01333333
);
fprintf(fp, "VOL(m^3),LWL\n");
fprintf(fp, "%lf,%lf\n", x[0] * x[2] * Tmld*x[3] * (1 + alpha), Lwl_*x[0] / Lbp_);
printf("r-- %f\n", r);
printf("L(m)\t%f\nB(m)\t%f\nD(m)\t%f\nCb\t%f\n", x[0], B, x[1], Cb);
printf("건조비\t%f\nW(ton)\t%f\nLWT(ton)\t%f\nFb(m)\t%f\n", result, (x[0] * B*Tmld*Cb*1.025*(1. + alpha)),
(Ws_ / (pow(Lbp_, 1.6)*(B_ + D_)))*pow(x[0], 1.6)*(B + x[1])
+ (Wo_ / Lbp_ / B_)*x[0] * B
+ (Wm_ / NMCR_)*NMCR, x[0] / Lbp_*Fb_);
printf("Cargo(m^3)\t%f\nNMCR(BHP)\t%10.10f\n", x[0] / Lbp_*Lh_*B*x[1] * Cch_*Cmd_, NMCR);
fclose(fp);
}
여기서 빌드시 오류가 뜨는데 문제를 잘 모르겠습니다.
빌드하면 다음과 같이 나옵니다.
해결방법이 너무나 알고싶습니다.ㅠㅠ
#visual studio #visual studio code #visual studio 2022 #visual studio 2019 #visual studio community #visual studio code 한글 #visual studio code download #visual studio download #visual studio 설치 #visual studio 단축키