2017-01-25 5 views
-2

問題の助けが必要です。私は以下の私のコードをコンパイルすると
、それは私に、このエラーを与える:エラーを解決する方法: "int *"から "int"への無効な変換

error: invalid conversion from " int* " to " int "

私はcalculatePercentage関数を作成したいので、私はそれを呼び出すときに私が値を使用することができます。

void calculatePercentage(int voteResult[],int percentage[]) 

const int NO_OF_CANDIDATE = 10; 

int main() 
    {  
     ifstream input("votes.txt",ios::in); 

     string candidates[NUMBER_OF_CANDIDATE]; 
     int voteResult[NUMBER_OF_CANDIDATE]; 
     int percentage[NUMBER_OF_CANDIDATE]; 

     for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) { 
      input >> candidates[i] >> voteResult[i]; 
     } 
     calculatePercentage(voteResult, percentage); // error happened here. 

     return 0; 
    } 

void calculatePercentage(int voteResult[],int percentage[]) 
{ 
    int totalVotes = 0; 
     for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) 
     { 
      totalVotes += votes[i]; 
     } 
     for (int j = 0; j < NUMBER_OF_CANDIDATE; j++) 
     { 
      double wk_percentage = static_cast<double>{votes[j])/totalVotes; 
      percentage[j]=static_cast<int>(wk_percentage*100); 
     } 

} 
+0

あなたは比類のないブラケット持っている: 'static_castを {' ' –

+0

(100 *票[j]を)/すべてのそれらのキャストを取り除くtotalVotes'。 – Jarod42

+3

'NUMBER_OF_CANDIDATE'は' NO_OF_CANDIDATE 'とされていますか? 'votes [i]'は 'voteResult [i]'であるとしますか?この例をコンパイルすると、質問の質問以外のエラーが発生します。 –

答えて

1

あなたが投稿したコードにはいくつかの誤りがあります。

  1. calculatePercentage()定義には ';'がありません。 NO_OF_CANDIDATEとNUMBER_OF_CANDIDATE間
  2. そうな名前の不一致
  3. 行方不明の#include <のfstream >(使用はifstream)
  4. の#include <文字列>
  5. ifstream前のstd ::名前空間を逃すとstring
  6. votesが宣言されていない行方不明どこでも(voteResultである必要がありますか)
  7. 間違った開きの中かっこstatic_cast<double>{votes[j])/totalVotes;

... おろかあなたは計算やパラメータ受け渡しを行う方法...

以下、編集されたコードを、それはあなたが期待通りに動作するかどうかわからなく、コンパイルする必要があります

#include <fstream> 
#include <string> 

void calculatePercentage(int voteResult[], int percentage[]); 

const int NUMBER_OF_CANDIDATE = 10; 

int main() 
{ 
    std::ifstream input("votes.txt"); 

    std::string candidates[NUMBER_OF_CANDIDATE]; 
    int voteResult[NUMBER_OF_CANDIDATE]; 
    int percentage[NUMBER_OF_CANDIDATE]; 

    for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) { 
     input >> candidates[i] >> voteResult[i]; 
    } 
    calculatePercentage(voteResult, percentage); // error happened here. 

    return 0; 
} 

void calculatePercentage(int voteResult[], int percentage[]) 
{ 
    int totalVotes = 0; 
    for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) 
    { 
     totalVotes += voteResult[i]; 
    } 
    for (int j = 0; j < NUMBER_OF_CANDIDATE; j++) 
    { 
     double wk_percentage = static_cast<double>(voteResult[j])/totalVotes; 
     percentage[j] = static_cast<int>(wk_percentage*100); 
    } 
} 

Ideoneでも。

+0

私はあなたのコメントでそれを実行することができます。どうもありがとうございます。 –

1

皆様のご意見ありがとうございます。私はいくつかのステートメントをスキップし、それらを投稿するときにいくつかのタイプミスをしました。私は以下のように修正しました。唯一のエラーは、 "int *"を "int"から変換できないということです。それを解決する方法を知らないだけです。

#include <fstream> 
#include <iostream> 
#include <iomanip> 
#include <string> 

using namespace std; 

void calculatePercentage(int voteResult[],int percentage[]); 

const int NUMBER_OF_CANDIDATE = 10; 

int main() 
    {  
     ifstream input("votes.txt",ios::in); 


     string candidates[NUMBER_OF_CANDIDATE]; 
     int vote[NUMBER_OF_CANDIDATE]; 
     int percentage[NUMBER_OF_CANDIDATE]; 

     for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) { 
      input >> candidates[i] >> vote[i]; 
     } 
     calculatePercentage(voteResult, percentage); // error happened here. 

     return 0; 
    } 

void calculatePercentage(int voteResult[],int percentage[]) 
{ 
    int totalVotes = 0; 
     for (int i = 0; i < NUMBER_OF_CANDIDATE; i++) 
     { 
      totalVotes += votes[i]; 
     } 
     for (int j = 0; j < NUMBER_OF_CANDIDATE; j++) 
     { 
      double wk_percentage = static_cast<double>(votes[j])/totalVotes; 
      percentage[j]=static_cast<int>(wk_percentage*100); 
     } 

} 
+0

あなたは "typo"を行いました: 'voteResult'は' vote'でなければなりません。 "宣言されていない識別子 'voteResult'の使用に似た以前のエラーがあるはずです(コンパイラは未知の変数に' int'型を使用しますファイルのエラーが多いため、互換性のないタイプ)。 "エラー部分の再開"だけでなく、完全なビルドログを見てください。 – Jarod42

+0

これは答えではありません。既存の回答を無効にする)。 – Jarod42

関連する問題