Построить структуру со структурой внутри

typedef struct Course {
char *CourseID;
char *CourseName;
struct Course* next;
} COURSE; 

typedef struct Student{
int ID;
struct Student* next
}STUDENT; 

Я хочу создать список курсов, а затем список студентов со следующими у каждого студента есть идентификатор и некоторые курсы из списка курсов и оценка каждого курса. но как я могу сделать это объявление внутри структуры STUDENT? я не могу этого понять

Например Студент: 3049583222 Курс: Биология (из списка курсов) класс: 30

и так далее, каждый студент мог пройти все курсы из списка.

Это начало. Насколько дальше вы продвинулись?

tadman 14.12.2020 08:57

Ну, у меня нет понимания, как мне создать структуру студентов, в которой у каждого студента есть курс, который я выберу, и оценка, я имею в виду синтаксис, как я мог написать это внутри структуры студентов?

PIG443 14.12.2020 08:58

Вам нужен связанный список курсов для каждого студента, который имеет оценку, и указатель на более подробное описание курса? не совсем понял вопрос?

A.R.C. 14.12.2020 09:01

Хорошо, извините за неправильное понимание, мне нужен список курсов с неограниченным количеством курсов, затем я хочу список студентов с неограниченным количеством для студентов, у каждого студента есть идентификатор и некоторые или все курсы из списка курсов, а также для каждого курса что есть у ученика, у него тоже есть оценка

PIG443 14.12.2020 09:03

В буквальном переводе: «иметь курс» -> struct Course* course и «оценка» -> int grade. Это свойства на Student.

tadman 14.12.2020 09:12

Что делать, если у студента более одного курса? и мне нужно, чтобы он имел, скажем, два курса с двумя оценками.

PIG443 14.12.2020 09:14
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
74
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это можно сделать несколькими способами, ниже показаны два подхода.

Вы можете выбрать один и построить на нем.

typedef struct Course {
    char *CourseID;
    char *CourseName;
    struct Course* next;
} COURSE; 

typedef struct Student{
    int ID;
}STUDENT;

//approach 1
#define NIDS 10
#define NCOURSES 20

typedef struct Student_Course_1{
    STUDENT STU_ID[NIDS];           /* to store list of student ids */
    COURSE STU_Courses[NCOURSES];   /* to store list of courses    */
}COURSES_OF_STUDENT_1;

//approach 2

typedef struct Student_Course_2{
    STUDENT STU_ID;
    COURSE STU_Courses;
}COURSES_OF_STUDENT_2;


int main()
{
    COURSES_OF_STUDENT_1 cs1;       /* this has list of students and courses inside it */
    COURSES_OF_STUDENT_2 cs2[NIDS]; /* you can use NIDS list of students and courses info with this */
    
    return 0;
}
Ответ принят как подходящий

Моя идея:

  • Связанный список студентов.
  • У каждого студента есть связанный список его курсов с оценкой.
  • Элементы связанного списка имеют указатель на подробное описание курса.
// Description of a course
typedef struct Course {
char *CourseID;
char *CourseName;
} COURSE; 


// Struct to hold the students grade, as a linked list to generate a list of all courses the student has.
typedef struct coursesTaken {
    int grade;
    COURSE* courseDescription;
    struct coursesTaken* nextCourse;
} COURSES_TAKEN;


// The student with ID and pointer to his first course.
typedef struct Student{
int ID;
COURSES_TAKEN* firstCourse;
struct Student* next;
}STUDENT;

Другие вопросы по теме