#c #function #struct
#c #функция #структура
Вопрос:
Привет всем, кто прочитал
У меня небольшая проблема (или она может быть большой!), Всего одна ошибка во время компиляции, но, как мы все знаем, одной ошибки достаточно, чтобы помешать прогрессу. В принципе, я довольно новичок в C , и мне было поручено написать следующий код и передать по значению аргумент типа stuct функции. Но я получаю следующее сообщение об ошибке: «два или более типов данных в объявлении average», поэтому любое решение / решения для моей одной ошибки будет высоко оценено. Заранее большое спасибо…
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 Averagen";
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
Комментарии:
1. Вы, кажется, очень смущены. Я даже не могу сказать, что вы ожидаете от определенных действий в вашем коде.
2. Вы должны использовать
std::string
вместоchar
массива для имени.3. «int void average ()» ???? что это должно означать?
Ответ №1:
int void average(student programming)
недопустимый синтаксис. Существует только один возвращаемый тип, т. Е. Он должен быть int average(student programming)
.
Комментарии:
1. Большое спасибо… Это была «пустота», которую я забыл убрать. Глупый я! Отметка репутации для вас за то, что помогли мне
Ответ №2:
Видите это?
int void average(student programming){
Это «два или более типов» подряд, в той части, где вы указываете, какой тип возвращается для функции. Решайтесь.
Есть несколько других проблем с вашим кодом, в основном просто стилистических. Вы не хотите, чтобы объявление вашей функции было extern
(поскольку оно находится прямо в том же файле); вы хотите, чтобы это объявление было вне main (оно будет работать внутри, но на самом деле нет смысла); вам не нужно math.h
(что в любом случае является заголовком C); вы должны бытьиспользование реального строкового типа для представления строк; сохранение среднего значения обратно в структуру не особенно полезно (оно у вас уже есть, поэтому просто используйте его напрямую); и некоторые из ваших имен переменных не имеют никакого смысла ( programming
это особенно очевидный пример).
Комментарии:
1. Да- очки приняты, я подробно рассмотрю то, что вы сказали, и попытаюсь изучить. Большое спасибо, галочка для вас.
2. Не могли бы вы, возможно, уточнить «вы должны использовать реальные строковые типы для представления строк»? как пример…
3.
std::string
Класс из<string>
библиотеки.
Ответ №3:
Ваше объявление вашей средней функции должно быть:
int average(student programming)
У вас там есть лишняя «пустота».