Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Struct med Arrays og Andre Structs | Avanceret Brug af Structs
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Beherskelse af C Structs

bookStruct 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

main.c

copy
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.

Opgave

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.

  1. Inde i funktionen oprettes en int-variabel total, initialiseret til 0.
  2. Brug en for-løkke til at iterere fra 0 til antallet af kurser (3).
  3. For hvert kursus tilgås credits, og værdien lægges til total.
  4. Returnér den endelige værdi af total.

Løsning

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 2
single

single

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

close

bookStruct 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

main.c

copy
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.

Opgave

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.

  1. Inde i funktionen oprettes en int-variabel total, initialiseret til 0.
  2. Brug en for-løkke til at iterere fra 0 til antallet af kurser (3).
  3. For hvert kursus tilgås credits, og værdien lægges til total.
  4. Returnér den endelige værdi af total.

Løsning

Switch to desktopSkift til skrivebord for at øve i den virkelige verdenFortsæt der, hvor du er, med en af nedenstående muligheder
Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 4. Kapitel 2
single

single

some-alt