2016-12-20 5 views
0

要素の周期表からのデータをいつでもアクセスできる配列に格納するプログラムを作成したいと思います。C++で構造型配列を作る方法

#include <iostream> 
using namespace std; 

struct element 
{ 
    string symbol; 
    string name; 
    float atomicWeight; 

}; 

element periodicTable[119]; 
periodicTable[1].symbol = "H"; 
periodicTable[1].name = "Hydrogen"; 
periodicTable[1].atomicWeight = 1.008; 

int main() 
{ 
    cout << periodicTable[1].symbol << periodicTable[1].name << periodicTable[1].atomicWeight << endl; 

    return 0; 
} 
:私は「周期表は、[119]」ここ

が私のコードで配列の各要素のためにそれの各要素のデータと構造体を作ることによってそれを行うと、その構造体のインスタンスを作成したいです

私は、Linuxを実行し、私はこれをコンパイルしようとすると、私はこのエラーを取得:「エラー:周期表は、タイプがない」私は正しく構造体の配列を作る方法を知っていただきたいと思い

を、誰でもあればこのようなプログラムを作ったり、他のエラーを見るのに良い方法があります。

+0

あなたは他のすべてのエラーを持っているのですか? – Valentin

+5

宣言のみのnamespaceスコープではステートメントを使用できません。文は関数の中に入ります。 'periodicTable [1] .symbol =" H ";'その他を 'main'の内部に移動します。 –

+0

関数の外に文を置くことはできません。 –

答えて

1

グローバル変数を使用することは、あなたに強い理由があることを除いてはお勧めできません。だから、通常、あなたが以下のように行うことができます。

int main() 
{ 
    element periodicTable[119]; 
    periodicTable[1].symbol = "H"; 
    periodicTable[1].name = "Hydrogen"; 
    periodicTable[1].atomicWeight = 1.008; 
    cout << periodicTable[1].symbol << periodicTable[1].name << periodicTable[1].atomicWeight << endl; 

    return 0; 
} 

をあなたが本当にグローバル変数を使用したい場合は、次のように行うことができます。

#include <iostream> 
using namespace std; 

struct element 
{ 
    string symbol; 
    string name; 
    float atomicWeight; 

}; 

element periodicTable[119]{ 
    {}, 
    {"H", "Hydrogen", 1.008f}, // 1.008 is double, 1.008f is float 
}; 

int main() 
{ 
    cout << periodicTable[1].symbol << periodicTable[1].name << periodicTable[1].atomicWeight << endl; 

    return 0; 
} 
2

機能の外で代入(またはその他の記述)を使用することはできません。代わりに初期化子を使用する:

element periodicTable[119] = { 
    {"H", "Hydrogen", 1.008} 
, {"He", "Helium", 4.003} 
, ... 
}; 

はまたC++配列がないものから、ゼロから始まるインデックス付けされることに注意するので、配列の最初の要素はperiodicTable[0]なく、periodicTable[1]です。

+1

私は、原子番号を使って要素にアクセスしたいと思うかもしれません。また、 '#include 'がありません。 – juanchopanza

関連する問題