Поля студента: name, lastName, studentId, mid1Grade, mid2Grade, finalGrade, средний
Поля курса: courseName, courseCode, myStudentArray (массив Student структур), currentStudentCount
Функции:
void createNewStudent(struct Course *myCourse);
void setGradeOfStudent(struct Course *myCourse);
void findAndDisplayAverage(struct Course *myCourse);
struct Student * findStudentByID(int id, struct Course *myCourse);
void displayAverageOfAllStudents(struct Course *myCourse);
void displayAverageOfStudentsInInterval(struct Course *myCourse
хорошо, поэтому я написал первую функцию, но есть ошибка, которую я не понимаю. Прежде всего, первая функция и то, что она делает:
createNewStudent: Предлагает пользователю ввести имя, фамилию и идентификатор нового студента. Значения, введенные пользователем, присваиваются полям студент, проживающий в них, yStudentArray, конечно, переменная, указанная myCourse. CurrentStudentCount будет обновлен так, чтобы он обозначал слот, выделенный для следующего студента.
и моя реализация:
#include <string.h>
#include <stdio.h>
struct Student {
char name[50];
char lastname[50];
int id;
int mid1;
int mid2;
int final;
double average;
};
struct Course {
char courseName[50];
char courseCode[50];
struct Student myStudentArray[5];
int currentstudentcount;
};
void createNewStudent(struct Course * myCourse);
void setGradeOfStudent(struct Course * myCourse);
void findAndDisplayAverage(struct Course * myCourse);
struct Student * findStudentByID(int id, struct Course * myCourse);
void displayAverageOfAllStudents(struct Course * myCourse);
void displayAverageOfStudentsInInterval(struct Course * myCourse);
int main() {
struct Student * stud;
int input = 0;
scanf("%d", & input);
if (input == 1) {
createNewStudent(struct Course * myCourse);
}
}
return 0;
}
void createNewStudent(struct Course * myCourse) {
struct Student s1;
printf("Enter name: ");
scanf("%[^\n]%*c", s1.name);
printf("Enter Surname: ");
scanf("%[^\n]%*c", s1.lastname);
printf("Enter id: ");
scanf("%d", & s1.id);
}
Когда вы вызываете функцию с if (input == 1) он дает ошибку: ожидаемое выражение перед 'struct', но я не понимаю этого, потому что * myCourse - это просто указатель на структуру курса, не так ли ???? Если я смогу понять это, я смогу использовать следующие функции, я думаю
Функция правильная ?? Я не знаю, почему это не работает
Хорошо, я попытался использовать struct Student myStudentArray[5];
, чтобы получить имя, фамилию, идентификатор (структуры такие же)
void createNewStudent(struct Course *myCourse);
void setGradeOfStudent(struct Course *myCourse);
int main(){
struct Course *myCourse;
int input=0;
scanf("%d",&input);
if(input == 1){
createNewStudent(myCourse);
}
return 0;
}
void createNewStudent(struct Course *myCourse){
myCourse->currentstudentcount=0;
printf("Enter name: ");
scanf("%[^\n]%*c"
,myCourse->myStudentArray[myCourse->currentstudentcount].name);
printf("Enter Surname: ");
scanf ("%[^\n]%*c",
myCourse->myStudentArray[myCourse->currentstudentcount].name);
myCourse->currentstudentcount++;
}
Продолжаю получать
может использоваться без инициализации в этом may be used uninitialized in this function [-Wmaybe-uninitialized]
и Ошибках сегментации