Struct med Arrays og Andre Structs
I nogle strukturer bliver det nødvendigt at bruge et array af indlejrede strukturer, når et objekt indeholder flere relaterede underobjekter. For eksempel, hvis en studerende kan tage flere kurser, giver det mening at repræsentere kurserne som et array af strukturer inde i Student-strukturen.
Eksempelsyntaks:
OuterStruct.NestedStruct[1].NestedField;
For at få adgang til et element i det indlejrede struktur-array, refereres først til den ydre struktur, derefter bruges en indeks til at vælge det ønskede element i arrayet, og til sidst tilgås et specifikt felt for dette element.
Praktisk eksempel
Forestil dig, at hver studerende har et navn, en alder og et sæt kurser. Hvert kursus indeholder sin titel, underviser og antal ECTS-point.
main.c
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include <stdio.h> #include <string.h> struct Course { char name[50]; char instructor[50]; int credits; }; struct Student { char name[50]; int age; struct Course courses[3]; // array of nested structures }; int main() { struct Student student; // Initialize student strcpy(student.name, "Alice Johnson"); student.age = 20; // Initialize courses strcpy(student.courses[0].name, "Mathematics"); strcpy(student.courses[0].instructor, "Dr. Smith"); student.courses[0].credits = 4; strcpy(student.courses[1].name, "Computer Science"); strcpy(student.courses[1].instructor, "Prof. Brown"); student.courses[1].credits = 3; strcpy(student.courses[2].name, "History"); strcpy(student.courses[2].instructor, "Dr. Green"); student.courses[2].credits = 2; // Display information printf("Student: %s\n", student.name); printf("Age: %d\n", student.age); printf("Courses:\n"); for (int i = 0; i < 3; i++) { printf(" Course %d: %s, Instructor: %s, Credits: %d\n", i + 1, student.courses[i].name, student.courses[i].instructor, student.courses[i].credits); } // Example of accessing a specific nested field printf("\nInstructor of the second course: %s\n", student.courses[1].instructor); return 0; }
I dette eksempel har strukturen Student et courses-array med tre elementer af typen Course. Hvert kursus har sin egen titel, underviser og antal ECTS-point. For at få adgang til et specifikt kursus bruges array-indekset og punktum-operatoren: student.courses[1].instructor.
Brug af arrays med indlejrede strukturer er nyttigt til at repræsentere objekter med gentagne underobjekter, såsom studerende med kurser, butikker med produkter eller bøger med forfattere.
Swipe to start coding
Studenten er repræsenteret af en struktur Student, som indeholder et faststørrelses-array af indlejrede strukturer Course. Hver kursus har et navn, en underviser og et antal ECTS-point. Funktionen skal iterere gennem alle kurser og summere ECTS-pointene.
Implementér en funktion calculateTotalCredits med returtypen int.
- Inde i funktionen oprettes en
int-variabeltotal, initialiseret til0. - Brug en
for-løkke til at iterere fra0til antallet af kurser (3). - For hvert kursus tilgås
credits, og værdien lægges tiltotal. - Returnér den endelige værdi af
total.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Fantastisk!
Completion rate forbedret til 4.35
Struct med Arrays og Andre Structs
Stryg for at vise menuen
I nogle strukturer bliver det nødvendigt at bruge et array af indlejrede strukturer, når et objekt indeholder flere relaterede underobjekter. For eksempel, hvis en studerende kan tage flere kurser, giver det mening at repræsentere kurserne som et array af strukturer inde i Student-strukturen.
Eksempelsyntaks:
OuterStruct.NestedStruct[1].NestedField;
For at få adgang til et element i det indlejrede struktur-array, refereres først til den ydre struktur, derefter bruges en indeks til at vælge det ønskede element i arrayet, og til sidst tilgås et specifikt felt for dette element.
Praktisk eksempel
Forestil dig, at hver studerende har et navn, en alder og et sæt kurser. Hvert kursus indeholder sin titel, underviser og antal ECTS-point.
main.c
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152#include <stdio.h> #include <string.h> struct Course { char name[50]; char instructor[50]; int credits; }; struct Student { char name[50]; int age; struct Course courses[3]; // array of nested structures }; int main() { struct Student student; // Initialize student strcpy(student.name, "Alice Johnson"); student.age = 20; // Initialize courses strcpy(student.courses[0].name, "Mathematics"); strcpy(student.courses[0].instructor, "Dr. Smith"); student.courses[0].credits = 4; strcpy(student.courses[1].name, "Computer Science"); strcpy(student.courses[1].instructor, "Prof. Brown"); student.courses[1].credits = 3; strcpy(student.courses[2].name, "History"); strcpy(student.courses[2].instructor, "Dr. Green"); student.courses[2].credits = 2; // Display information printf("Student: %s\n", student.name); printf("Age: %d\n", student.age); printf("Courses:\n"); for (int i = 0; i < 3; i++) { printf(" Course %d: %s, Instructor: %s, Credits: %d\n", i + 1, student.courses[i].name, student.courses[i].instructor, student.courses[i].credits); } // Example of accessing a specific nested field printf("\nInstructor of the second course: %s\n", student.courses[1].instructor); return 0; }
I dette eksempel har strukturen Student et courses-array med tre elementer af typen Course. Hvert kursus har sin egen titel, underviser og antal ECTS-point. For at få adgang til et specifikt kursus bruges array-indekset og punktum-operatoren: student.courses[1].instructor.
Brug af arrays med indlejrede strukturer er nyttigt til at repræsentere objekter med gentagne underobjekter, såsom studerende med kurser, butikker med produkter eller bøger med forfattere.
Swipe to start coding
Studenten er repræsenteret af en struktur Student, som indeholder et faststørrelses-array af indlejrede strukturer Course. Hver kursus har et navn, en underviser og et antal ECTS-point. Funktionen skal iterere gennem alle kurser og summere ECTS-pointene.
Implementér en funktion calculateTotalCredits med returtypen int.
- Inde i funktionen oprettes en
int-variabeltotal, initialiseret til0. - Brug en
for-løkke til at iterere fra0til antallet af kurser (3). - For hvert kursus tilgås
credits, og værdien lægges tiltotal. - Returnér den endelige værdi af
total.
Løsning
Tak for dine kommentarer!
single