2017-01-05 1 views
0

Я видел много похожих вопросов или тем же тем, но не ответил на мою ситуацию (или я немой, не обвиняю меня, пожалуйста). Я начинающий и ученик, поэтому извините, если я недостаточно подготовлен, чтобы ответить на этот вопрос сам.переменная или поле «Функция» объявлено недействительной

#include <iostream> 
using namespace std; 

void Skaiciavimai(double kiek_bulviu, int talkininkai, int & dienos, 
    int & visi_talkininkai, double & viso_bulviu, 
    double & vieno_vidurkis); 

int main() 
{ 
    double atsk = 100, bulves[100], talk[1000], kiek_bulviu = 0, talkininkai = 0; 
    int dienos = 0, visi_talkininkai = 0; 
    double viso_bulviu = 0, vieno_vidurkis = 0; 

    for (int i = 0; i < 1000; i++) { 
     cin >> bulves[i]; 
     kiek_bulviu = kiek_bulviu + bulves[i]; 
     if (bulves[i] == 0) { 
      i = 1000; 
     } 
     else { 
      cin >> talk[i]; 
      talkininkai = talkininkai + talk[i]; 
      dienos++; 
     } 
    } 
    void Skaiciavimai(kiek_bulviu, talkininkai, dienos, visi_talkininkai, viso_bulviu, vieno_vidurkis); 
    cout << dienos << endl; 
    cout << viso_bulviu; 
    cout << vieno_vidurkis; 
    return 0; 
} 
void Skaiciavimai(double kiek_bulviu, int talkininkai, int & dienos, 
    int & visi_talkininkai, double & viso_bulviu, 
    double & vieno_vidurkis) { 
    visi_talkininkai = talkininkai; 
    viso_bulviu = kiek_bulviu; 
    vieno_vidurkis = viso_bulviu/visi_talkininkai; 
} 
+3

Я надеюсь, что ответ решает вашу проблему, но в будущем вы должны указать, что происходит не так. Если это ошибка компиляции, скопируйте здесь ошибку. Если это плохой результат, вход состояния, ожидаемый выход и неправильный вывод. На данный момент у нас есть код с неанглийскими именами и тот факт, что есть проблема. – stefaanv

+1

Не только в будущем, но и сейчас, чтобы сохранить этот пост. –

ответ

3
void Skaiciavimai(kiek_bulviu, talkininkai, dienos, visi_talkininkai, viso_bulviu, vieno_vidurkis); 

Снимите ведущую void. Вам не нужно указывать возвращаемый тип вызываемых функций. Добавление возвращаемого типа делает его объявлением функции. Это должно выглядеть так:

Skaiciavimai(kiek_bulviu, talkininkai, dienos, visi_talkininkai, viso_bulviu, vieno_vidurkis); 

Редактировать: Для большей ясности, я аннотировал первоначальный пример.

int main() 
{ 
    double atsk = 100, bulves[100], talk[1000], kiek_bulviu = 0, talkininkai = 0; 
    int dienos = 0, visi_talkininkai = 0; 
    double viso_bulviu = 0, vieno_vidurkis = 0; 

    for (int i = 0; i < 1000; i++) { 
     cin >> bulves[i]; 
     kiek_bulviu = kiek_bulviu + bulves[i]; 
     if (bulves[i] == 0) { 
      i = 1000; 
     } 
     else { 
      cin >> talk[i]; 
      talkininkai = talkininkai + talk[i]; 
      dienos++; 
     } 
    } 

    /*void*/ Skaiciavimai(kiek_bulviu, talkininkai, dienos, visi_talkininkai, viso_bulviu, vieno_vidurkis); 
// ^^^^ Remove this void 

    cout << dienos << endl; 
    cout << viso_bulviu; 
    cout << vieno_vidurkis; 
    return 0; 
} 
+0

Я считаю, что это может быть отличное решение, но я выполняю какие-то задачи, где задан тип void и не может быть отредактирован. К сожалению, эта строка должна быть оставлена ​​как есть :( – Adversas

+1

@Adversas Я отредактирую свой вопрос, чтобы уточнить. Линия не может оставаться такой, как это было, это просто не законный C++. –

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