2017-10-20 3 views
-7
#include<cmath> 
#include<cstdio> 
#include<vector> 
#include<iostream> 
#include<algorithm> 
//There were problems in this code. the include wasnt showing up. So i just put them as comments. 

using namespace std; 

int main() 
{ 
    int n, a[n],count[100],temp; 

    cin>>n; 

    if(n<100||n>pow(10,6)) 
     return 0; 

    for(int i=0;i<100;i++) 
    { 
     count[i]=0; 
    } 

    for(int j=0;j<n;j++) 
    { 
     cin>>a[j]; 

     if(a[j]<0||a[j]>=100) 
      return 0; 
    } 

    for(int m=0;m<n;m++) 
    { 
     temp=a[m]; 
     count[temp]++; 
    } 

    for(int s=0;s<100;s++) 
    { 
     cout<<count[s]<<" "; 
    } 

    return 0; 
} 
+8

'[n]は 'の配列として初期化されますサイズはnですがnは初期化されていません – CoryKramer

+1

int n、a [n]、count [100]、temp; 'ここで' n 'とは何ですか?また、 'a [n]'は標準のC++では合法ではありません。代わりにstd :: vectorを使用してください。 – drescherjm

+0

短い答えは? int a [n]それからあなたはnに値を与えます。あなたとあなたの間の距離が5に達しようとしていて、あなたのnが5を超えていないと想像してください。メモリ割り当てでセグメント化エラーが発生する – koksalb

答えて

0

おっと!

未定義の変数(システムが望むものであれば何でもよい)で可変サイズの配列(存在しない...ちょっと)を作成しようとしているようです。

int n; 
std::cin >> n; 
int* a = new int[n]; 

するか、あなたがそれらを含めていることから、魔法C++ vectorsを使用します。

使用ポインタの代わりに、ユーザーは、アレイを作成する前に、変数を埋めてみましょう。彼らは、LIFOおよびFIFOのような複数のインアウト方法と共に、動的割り当てのような普通のポインタと型安全性のいくつかの新しい方法よりも多くの機能を提供する:

int n; 
std::cin >> n; 
std::vector<int> a(n); 
+3

Awwww、 'new []'に助言しないでください。 'std :: vector'の何が問題なのですか? – user0042

+0

申し訳ありません、私はそれに取り組んでいます... –

+3

[C++ベクタ](http://en.cppreference.com/w/cpp/container/vector)について、実際には「魔法」_って何ですか?十分に定義されたすべての動作があります。 – user0042

0

使用することはできませんメモリを割り当てたところ、誰も私を伝えることができますしてください。 -

int n, a[n],count[100],temp; 

cin>>n; 

固定サイズの配列の宣言は、コンパイル時にサイズを必要とする必要があります。上記の宣言では、nはコンパイル時にサイズがありません。したがって、コンパイラはスタックからメモリを割り当てることができません。

a

関連する問題