2017-01-25 4 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 * голосов [у])/totalVotes' избавиться от всех этих актеров. – Jarod42

+3

Предполагается, что 'NUMBER_OF_CANDIDATE' является' NO_OF_CANDIDATE'? это 'vote [i]' предположим быть 'voteResult [i]'? При компиляции этого примера возникают ошибки, отличные от тех, о которых спрашивает вопрос. –

ответ

1

В коде, который вы опубликовали, есть куча ошибок.

  1. расчетПредложение() отсутствует закрытие ';'
  2. вероятное несоответствие между именем NO_OF_CANDIDATE и NUMBER_OF_CANDIDATE
  3. отсутствует #include <fstream> (с помощью ifstream)
  4. отсутствует #include < строка >
  5. отсутствует зЬй :: имен, прежде чем ifstream и 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

Вы сделали «опечатку»: 'voteResult' должен быть' vote'. У вас должна быть предыдущая ошибка, аналогичная «использованию необъявленного идентификатора« voteResult »(бывает, что компилятор может использовать тип« int »для неизвестной переменной, чтобы обеспечить больше ошибок в файле, и, следовательно, несовместимый тип). Посмотрите на полный журнал построения, а не только на «часть ошибки резюме». – Jarod42

+0

BTW. Это не ответ. Вместо этого вы должны отредактировать свой пост (но не нужно аннулировать существующие ответы). – Jarod42

Смежные вопросы