2017-01-23 18 views
-1

私のコードを実行しようとするたびに、コンパイラは常にエラーを表示します:演算子[] '(オペランドの型は' carti 'と' int 'です)|複数回。私は1つのファイルから10個の構造体を読み込み、 'for'ループを使って変数を 'c [i]'変数に代入し、3つの異なる方法で並べ替えて画面に表示しようとしています。なぜコンパイラは "演算子[] 'と一致しませんか(オペランドの型は' carti 'と' int ')"

#include <iostream> 
#include <fstream> 
using namespace std; 

struct carti{ 
    char nume[41]; 
    float pret; 
    float rating; 
}c; 

int main(){ 
    int i,j; 
    ifstream fin; 
    fin.open("carti.txt"); 
    for(i=0;i<10;i++){ 
     getline(c[i].nume,41) 
     fin>>c[i].pret; 
     fin>>c[i].rating; 
     cout<< c[i]<<"\n"; 
    } 
    for(i=0;i<10;i++){ 
     if(c[i].nume[0]>c[i+1].nume[0]){ 
      c[i]=c[i+1]; 
     } 
    } 
    for(i=0;i<10;i++){ 
     cout<<c[i]<<"\n"; 
    } 
    for(i=0;i<10;i++){ 
     if(c[i].pret>c[i+1].pret){ 
      c[i]=c[i+1]; 
     } 
    } 
    for(i=0;i<10;i++){ 
     cout<<c[i]<<"\n"; 
    } 
    for(i=0;i<10;i++){ 
     if(c[i].rating>c[i+1].rating){ 
      c[i]=c[i+1]; 
     } 
    } 
    for(i=0;i<10;i++){ 
     cout<<c[i]<<"\n"; 
    } 
} 
+0

変数cは配列ではありません。これはスカラー変数です。したがって、添字演算子は適用できません。 –

+0

あなたは 'c'を泣かせているのですが、' c [i] 'は何と思いますか? – bolov

+0

'c'は" carti "タイプです(これは大文字にする必要があります)。 'あなたは何をすると思いますか? – Carcigenicate

答えて

0

あなたはこれをしたい場合があります:これはこれまでのところ、私のコードです (これは学校の割り当てである)

struct carti{ 
     char nume[41]; 
     float pret; 
     float rating; 
    }c[10]; 

はこのことを言って、あなたのコードを持つ他の問題があります。

たとえば、cout<<c[i]とします。これを達成するには、オーバーロードされた演算子operator<<を提供する必要があります。

関連する問題