2016-04-19 9 views
0

基本的な追加をするのに問題があります。私は、なぜA11 * G11とA12 * G21が有限の値を持っている間、J11の戻り値が0であるのか分からない。私はそれが可変型と関係していることを知っています。あなたの助けが大変ありがとうございます。ここでは、コードは次のとおりです。二重変数の合計

#include <vector> 
#include <iostream> 
#include <fstream> 
#include <cmath> 
#include <cstdlib> 
#include <set> 

using namespace std; 

void simple() 
{ 
double G11,G12,G13,G21,G22,G23,G31,G32; 
double G33,G41,G42,G43,G51,G52,G53,G61; 
double G62,G63,G71,G72,G73,G81,G82,G83; 
double J11; 
double xx,yy,zz; 
double A11,A12; 
vector<double> xcoor; 
vector<double> ycoor; 
vector<double> zcoor; 
double G1=1/sqrt(3); 
double G2=-1/sqrt(3); 

    xcoor.push_back(G1); 
    xcoor.push_back(G2); 
    xcoor.push_back(G1); 
    xcoor.push_back(G2); 
    xcoor.push_back(G1); 
    xcoor.push_back(G2); 
    xcoor.push_back(G1); 
    xcoor.push_back(G2); 

    ycoor.push_back(G1); 
    ycoor.push_back(G2); 
    ycoor.push_back(G2); 
    ycoor.push_back(G1); 
    ycoor.push_back(G1); 
    ycoor.push_back(G2); 
    ycoor.push_back(G2); 
    ycoor.push_back(G1); 

    zcoor.push_back(G2); 
    zcoor.push_back(G2); 
    zcoor.push_back(G2); 
    zcoor.push_back(G2); 
    zcoor.push_back(G1); 
    zcoor.push_back(G1); 
    zcoor.push_back(G1); 
    zcoor.push_back(G1); 


    for (size_t z = 0 ; z < 43 ; z++) { 
     for (size_t y = 0 ; y < 43 ; y++) { 
      for (size_t x = 0 ; x < 43 ; x++) {       

       G11=x; 
       G12=y; 
       G13=z; 
       G21=x; 
       G22=y+1.; 
       G23=z; 
       G31=x+1.; 
       G32=y+1.; 
       G33=z; 
       G41=x+1.; 
       G42=y; 
       G43=z; 
       G51=x; 
       G52=y; 
       G53=z+1.; 
       G61=x; 
       G62=y+1.; 
       G63=z+1.; 
       G71=x+1.; 
       G72=y+1.; 
       G73=z+1.; 
       G81=x+1.; 
       G82=y; 
       G83=z+1.; 

      for(size_t t = 0 ; t < 8 ; t++){ 

       xx = xcoor[t]; 
       yy = ycoor[t]; 
       zz = zcoor[t]; 

       A11=(-1./8.)*(1-yy)*(1-zz);   
       A12=(1./8.)*(1-yy)*(1-zz); 

       J11 = A11 * G11 + A12 * G21; 

       cout<<J11<<endl; 

       } 
      } 
     } 
    } 
} 



int main() 
{ 

    simple(); 
    cout << "Computation done." << endl; 

    return 0; 
} 
+4

多くの変数を持つ宣言を見たとき、なぜこの人は配列/ベクトルを使用していないのですか? PS:これをC++とタグ付けしてください –

+0

私はこれに新しいものですが、配列/ベクターではまだ快適ではありません。 – user147813

+8

天使になり、問題を1つのステートメントに分離してください。その答えは、私たちには古い猫には明らかです。 – Bathsheba

答えて

4

これがゼロでなければならない:

J11 = A11 * G11 + A12 * G21; 

A11 = -A12ので、あなたがここに見ることができるよう:

A11=(-1./8.)*(1-yy)*(1-zz);   
A12=(1./8.)*(1-yy)*(1-zz); 

とG11 = G21理由により:

G11 = x 
G21 = x 

しかし、私はあなたが何をしているのか分かりませんこのコードで達成しようとしています。

+0

ありがとうございます。私は変数の数のために私のコードでいくつかの非常に基本的な間違いをした。閉包のように、配列やベクトルを扱うための優れた情報源と例が分かっていれば教えてください。 – user147813