Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Herausforderung: Übergabe Benutzerdefinierter Strukturen als Argumente | Funktionsargumente Spezifikation
C++ Funktionen

bookHerausforderung: Übergabe Benutzerdefinierter Strukturen als Argumente

Wir können auch Strukturen (Klassen) als Argumente einer Funktion übergeben. Dies erfolgt analog zur Übergabe einfacher Datentypen, indem der Struktur- (Klassen-) Name als Typspezifizierer in der Funktionssignatur verwendet wird:

Wie bei einfachen Datentypen können benutzerdefinierte Strukturen (Klassen) als Wert, Zeiger oder Referenz übergeben werden.

passByValue.cpp

passByValue.cpp

passByPointer.cpp

passByPointer.cpp

passByReference.cpp

passByReference.cpp

copy
1234567891011121314151617181920212223
#include <iostream> #include <string> // Define a custom structure struct Person { std::string name; int age; }; // Function that takes a Person structure by value void displayPersonInfo(Person p) { std::cout << "Name: " << p.name << ", Age: " << p.age << std::endl; } int main() { // Create a Person structure Person person1 = {"Alice", 30}; // Call the function and pass the Person structure by value displayPersonInfo(person1); }

Hinweis

Es gibt eine weitere, komfortablere Möglichkeit, auf das Attribut einer Struktur über einen Zeiger zuzugreifen: Wir können den Operator -> anstelle von (*). verwenden. Zum Beispiel:

  • p->name anstelle von (*p).name;
  • p->age anstelle von (*p).age
Aufgabe

Swipe to start coding

Sie haben eine:n Schüler:in mit Noten in 3 Fächern. Ihre Aufgabe ist es, die Durchschnittsnote des/der Schüler:in zu berechnen.

  1. Die Funktion calculateAverageGrade erhält eine Student-Struktur per Referenz, die den Namen sowie die Noten in Mathematik, Physik und Chemie enthält.
  2. Addieren Sie innerhalb von calculateAverageGrade die drei Fachnoten und weisen Sie das Ergebnis der Variablen averageScore zu (mathScore, physicsScore, chemistryScore).
  3. Teilen Sie averageScore durch 3.0, um die Durchschnittsnote als double zu erhalten.
  4. Bestimmen Sie die Gesamtleistung:
    • Wenn averageScore >= 90, geben Sie "Overall Performance: Excellent" aus.
    • Wenn averageScore >= 70, geben Sie "Overall Performance: Good" aus.
    • Andernfalls geben Sie "Overall Performance: Needs Improvement" aus.

Lösung

solution.cpp

solution.cpp

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 7
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Suggested prompts:

Can you explain how passing by value, pointer, and reference works with structures?

Can you provide an example of a function that takes a structure as an argument?

What is the difference between using the `->` operator and the `.` operator with structures?

close

Awesome!

Completion rate improved to 5

bookHerausforderung: Übergabe Benutzerdefinierter Strukturen als Argumente

Swipe um das Menü anzuzeigen

Wir können auch Strukturen (Klassen) als Argumente einer Funktion übergeben. Dies erfolgt analog zur Übergabe einfacher Datentypen, indem der Struktur- (Klassen-) Name als Typspezifizierer in der Funktionssignatur verwendet wird:

Wie bei einfachen Datentypen können benutzerdefinierte Strukturen (Klassen) als Wert, Zeiger oder Referenz übergeben werden.

passByValue.cpp

passByValue.cpp

passByPointer.cpp

passByPointer.cpp

passByReference.cpp

passByReference.cpp

copy
1234567891011121314151617181920212223
#include <iostream> #include <string> // Define a custom structure struct Person { std::string name; int age; }; // Function that takes a Person structure by value void displayPersonInfo(Person p) { std::cout << "Name: " << p.name << ", Age: " << p.age << std::endl; } int main() { // Create a Person structure Person person1 = {"Alice", 30}; // Call the function and pass the Person structure by value displayPersonInfo(person1); }

Hinweis

Es gibt eine weitere, komfortablere Möglichkeit, auf das Attribut einer Struktur über einen Zeiger zuzugreifen: Wir können den Operator -> anstelle von (*). verwenden. Zum Beispiel:

  • p->name anstelle von (*p).name;
  • p->age anstelle von (*p).age
Aufgabe

Swipe to start coding

Sie haben eine:n Schüler:in mit Noten in 3 Fächern. Ihre Aufgabe ist es, die Durchschnittsnote des/der Schüler:in zu berechnen.

  1. Die Funktion calculateAverageGrade erhält eine Student-Struktur per Referenz, die den Namen sowie die Noten in Mathematik, Physik und Chemie enthält.
  2. Addieren Sie innerhalb von calculateAverageGrade die drei Fachnoten und weisen Sie das Ergebnis der Variablen averageScore zu (mathScore, physicsScore, chemistryScore).
  3. Teilen Sie averageScore durch 3.0, um die Durchschnittsnote als double zu erhalten.
  4. Bestimmen Sie die Gesamtleistung:
    • Wenn averageScore >= 90, geben Sie "Overall Performance: Excellent" aus.
    • Wenn averageScore >= 70, geben Sie "Overall Performance: Good" aus.
    • Andernfalls geben Sie "Overall Performance: Needs Improvement" aus.

Lösung

solution.cpp

solution.cpp

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 7
single

single

some-alt