Передача по значению структуры типа функции, Ошибка: два или более типов данных в объявлении «среднего» !!- - PullRequest
0 голосов
/ 23 октября 2011

Привет всем, кто читает

У меня небольшая проблема (или она может быть большой!), Только одна ошибка во время компиляции, но, как мы все знаем, одна ошибка - все, что нужно, чтобы помешать прогрессу.По сути, я довольно новичок в C ++, и мне было поручено написать следующий код и передать по значению аргумент типа stct функции.Но я получаю следующее сообщение об ошибке: «два или более типов данных в объявлении среднего значения», поэтому любое решение для одной моей ошибки будет высоко оценено.Большое спасибо заранее ...

enter code here
#include <iostream> 
#include <cstdio>
#include <math.h>
using namespace std;


           struct student{

              char name[40];
              int student_id;
              int student_grades[3];
              int average;
           };

int main ()
{
   extern int average(student);
   student programming;

   int j;

         cout<<"\nPlease Enter the student name for student number: ";

         cin>>programming.name;

         cout<<"\nPlease Enter student i.d for student number: ";

         cin>>programming.student_id;

         cout<<"\nPlease Enter student grades for student number: ";

         for(j=0;j<3;j++){

                    cout<<"\nEnter student grade no: "<<j+1<<"\n";
                    cin>>programming.student_grades[j];               
         }

         programming.average=average(programming);

         cout<<"\nNo.      Name      ID Number      Average\n";
         cout<<programming.name;
         cout<<"      "<<programming.student_id <<"      ";
         cout<<programming.average<<"      ";             

     system ("PAUSE");
     return 0;
}

struct student;
int void average(student programming){

    int sum=0;
    int ave=0;
    int j;

    for(j=0;j<3;j++){
           sum=sum+programming.student_grades [j];
    }
    ave=sum/3;
    return ave;
}
enter code here

Ответы [ 3 ]

2 голосов
/ 23 октября 2011

int void average(student programming) не является допустимым синтаксисом. Существует только один тип возврата, то есть он должен быть int average(student programming).

0 голосов
/ 23 октября 2011

Ваше объявление вашей средней функции должно быть:

int average(student programming)

У вас есть дополнительная "пустота".

0 голосов
/ 23 октября 2011

Видите это?

int void average(student programming){

Это «два или более типов» подряд, в той части, где вы говорите, что тип возврата для функции. Решайся.

Есть несколько других проблем с вашим кодом, в основном просто стилистических. Вы не хотите, чтобы объявление вашей функции было extern (поскольку оно находится прямо в том же файле); вы хотите, чтобы это объявление было вне main (оно будет работать внутри, но в действительности нет никакого смысла); вам не нужно math.h (в любом случае это заголовок C); вы должны использовать реальный строковый тип для представления строк; сохранение среднего балла обратно в структуру не особенно полезно (у вас уже есть, так что просто используйте его напрямую); и некоторые имена ваших переменных не имеют никакого смысла (особенно очевидным является programming).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...