void main() { double fcd, fyd, Diameter, As_1[2], r[2], sa, xb_1, As, Ac, Nou, Nod, Noud, Nout, xb, esy, Mb, Mbd, ab, theta, d, *T, Cc, Aseg, alpha, myu, fs, Moud, xbar, e, ri, Nb, Nbd, *arm, Mseg, Ttotal, Mtotal, Mo, Mod, EPS, haikin_kei[2], fck ; int n[2], dansu, i, j, k, ntotal ; char buffer[8] ; const double PI=3.14159265358979, Es=2.1e6, ecu=0.0035 ; // パラメーターが全部入力されているか if ( check_1() == 1 ) { return ; } // ファイルのオープン if (( fp=fopen(SaveDialog1->FileName.c_str(),"wt")) == NULL ){ Application->MessageBox("結果の出力ファイルを設定し直して下さい。", "出力ファイルエラー",MB_ICONEXCLAMATION | MB_OK ) ; return ; } fprintf( fp, "入力データ\n" ) ; fck = StrToFloat( Edit_fck->Text ) ; fprintf( fp, "コンクリート設計基準強度(kgf/cm2)\t%.0f\n", fck ) ; fcd = fck / 1.3 ; fyd = StrToFloat( Edit_fyd->Text ) ; fprintf( fp, "鉄筋設計降伏強度(kgf/cm2)\t%.0f\n", fyd ) ; Diameter = StrToFloat( Edit_Diam->Text ) ; fprintf( fp, "橋脚断面直径(cm)\t%.0f\n", Diameter ) ; n[0] = StrToInt( Edit_n1->Text ) ; As_1[0] = StrToFloat( Edit_As1->Text ) ; haikin_kei[0] = StrToFloat( Edit_r1->Text ) ; dansu = 1 ; if ( CheckBox2->Checked ) { n[1] = StrToInt( Edit_n2->Text ) ; As_1[1] = StrToFloat( Edit_As2->Text ) ; haikin_kei[1] = StrToFloat( Edit_r2->Text ) ; dansu = 2 ; } for ( i=0; i esy ) { fs = fyd ; } else { fs = e * Es ; } T[i] = As_1[j] * fs ; arm[i] = r[j] ; i++ ; ri = - r[j] + Diameter / 2. - xb ; e = ri * esy / ( d - xb ) ; if ( e < -esy ) { fs = -fyd ; } else { fs = e * Es ; } T[i] = As_1[j] * ( fs + fcd ) ; arm[i] = - r[j] ; i++ ; for ( k=1; k esy ) { fs = fyd ; } else if ( e < -esy ) { fs = -fyd + fcd ; } else { fs = e * Es + fcd ; } T[i] = 2. * As_1[j] * fs ; i++ ; } } myu = ab / Diameter ; alpha = acos( 1. - 2. * myu ) ; Aseg = Diameter * Diameter * ( alpha - sin (alpha) * cos( alpha ) ) / 4. ; Mseg = pow( Diameter * sin( alpha ), 3 ) / 12. ; xbar = Mseg / Aseg ; Cc = fcd * Aseg ; Ttotal = 0. ; Mtotal = 0. ; for ( i=0; i esy ) { fs = fyd ; } else { fs = e * Es ; } T[i] = As_1[j] * fs ; arm[i] = r[j] ; i++ ; ri = - r[j] + Diameter / 2. - xb ; e = ri * esy / ( d - xb ) ; if ( e < -esy ) { fs = -fyd ; } else { fs = e * Es ; } T[i] = As_1[j] * ( fs + fcd ) ; arm[i] = - r[j] ; i++ ; for ( k=1; k esy ) { fs = fyd ; } else if ( e < -esy ) { fs = -fyd + fcd ; } else { fs = e * Es + fcd ; } T[i] = 2. * As_1[j] * fs ; i++ ; } } Ttotal = 0. ; Mtotal = 0. ; for ( i=0; i EPS ) ; Mo = Cc * xbar + Mtotal ; Mod = Mo / 1.15 ; // N=0の時 Nou = fcd * Ac + fyd * As ; Nod = Nou / 1.15 ; // 中心軸圧縮耐力(安全率1.15) Noud = Nou / 1.3 ; // 中心軸圧縮耐力(安全率1.3) Nout = -fyd * As / 1.15 ; // 中心軸引張耐力 Moud = Mb * ( Nod - Noud ) / ( Nod - Nb ) ; // N=Noudの時 // kgfとkgf.cmを、tfとtf.mに変換 Mod = Mod / 1.e5 ; Nbd = Nbd / 1.e3 ; Mbd = Mbd / 1.e5 ; Nod = Nod / 1.e3 ; Noud = Noud / 1.e3 ; Nout = Nout / 1.e3 ; Moud = Moud / 1.e5 ; // 結果をファイルに保存 fprintf( fp, "\n結果\n" ) ; fprintf( fp, "\t軸力(tf)\tモーメント(tf.m)\n" ) ; fprintf( fp, "\t%.0f\t%.0f\n", Nod, 0. ) ; fprintf( fp, "中心軸圧縮耐力\t%.0f\t%.0f\n", Noud, 0. ) ; fprintf( fp, "\t%.0f\t%.0f\n", Noud, Moud ) ; fprintf( fp, "つりあい\t%.0f\t%.0f\n", Nbd, Mbd ) ; fprintf( fp, "\t%.0f\t%.0f\n", 0., Mod ) ; fprintf( fp, "中心軸引張耐力\t%.0f\t%.0f\n", Nout, 0. ) ; fclose ( fp ) ; // 結果をForm2に表示 sprintf( buffer , "%8.0f" , Mod ) ; Form2->Edit7->Text = buffer ; sprintf( buffer , "%8.0f" , Nbd ) ; Form2->Edit3->Text = buffer ; sprintf( buffer , "%8.0f" , Mbd ) ; Form2->Edit4->Text = buffer ; sprintf( buffer , "%8.0f" , Nod ) ; Form2->Edit1->Text = buffer ; sprintf( buffer , "%8.0f" , Noud ) ; Form2->Edit2->Text = buffer ; sprintf( buffer , "%8.0f" , Nout ) ; Form2->Edit5->Text = buffer ; sprintf( buffer , "%8.0f" , Moud ) ; Form2->Edit6->Text = buffer ; Form2->Show() ; }