Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Défi : Passage de Structures Personnalisées en Tant qu'Arguments | Spécification des Arguments de Fonction
Fonctions C++

bookDéfi : Passage de Structures Personnalisées en Tant qu'Arguments

Nous pouvons également passer des structures (classes) en tant qu'arguments de fonction. Cela s'effectue de la même manière que pour les types de données simples, en utilisant le nom de la structure (classe) comme spécificateur de type dans la signature de la fonction :

Comme pour les types de données simples, il est possible de passer des structures (classes) personnalisées par valeur, par pointeur ou par référence.

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); }

Remarque

Il existe une méthode plus pratique pour accéder à l'attribut d'une structure via un pointeur : on peut utiliser l'opérateur -> au lieu de (*).. Par exemple :

  • p->name au lieu de (*p).name ;
  • p->age au lieu de (*p).age
Tâche

Swipe to start coding

Vous avez un étudiant avec des notes dans 3 matières. Votre tâche est de calculer la moyenne des notes de l'étudiant.

  1. La fonction calculateAverageGrade prend une structure Student par référence, représentant le nom de l'étudiant et ses notes en Mathématiques, Physique et Chimie.
  2. À l'intérieur de calculateAverageGrade, additionnez les trois notes des matières et assignez le résultat à la variable averageScore (mathScore, physicsScore, chemistryScore).
  3. Divisez averageScore par 3.0 pour obtenir la moyenne sous forme de double.
  4. Déterminez la performance globale :
    • Si averageScore >= 90, affichez "Overall Performance: Excellent".
    • Si averageScore >= 70, affichez "Overall Performance: Good".
    • Sinon, affichez "Overall Performance: Needs Improvement".

Solution

solution.cpp

solution.cpp

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 7
single

single

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

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

bookDéfi : Passage de Structures Personnalisées en Tant qu'Arguments

Glissez pour afficher le menu

Nous pouvons également passer des structures (classes) en tant qu'arguments de fonction. Cela s'effectue de la même manière que pour les types de données simples, en utilisant le nom de la structure (classe) comme spécificateur de type dans la signature de la fonction :

Comme pour les types de données simples, il est possible de passer des structures (classes) personnalisées par valeur, par pointeur ou par référence.

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); }

Remarque

Il existe une méthode plus pratique pour accéder à l'attribut d'une structure via un pointeur : on peut utiliser l'opérateur -> au lieu de (*).. Par exemple :

  • p->name au lieu de (*p).name ;
  • p->age au lieu de (*p).age
Tâche

Swipe to start coding

Vous avez un étudiant avec des notes dans 3 matières. Votre tâche est de calculer la moyenne des notes de l'étudiant.

  1. La fonction calculateAverageGrade prend une structure Student par référence, représentant le nom de l'étudiant et ses notes en Mathématiques, Physique et Chimie.
  2. À l'intérieur de calculateAverageGrade, additionnez les trois notes des matières et assignez le résultat à la variable averageScore (mathScore, physicsScore, chemistryScore).
  3. Divisez averageScore par 3.0 pour obtenir la moyenne sous forme de double.
  4. Déterminez la performance globale :
    • Si averageScore >= 90, affichez "Overall Performance: Excellent".
    • Si averageScore >= 70, affichez "Overall Performance: Good".
    • Sinon, affichez "Overall Performance: Needs Improvement".

Solution

solution.cpp

solution.cpp

Switch to desktopPassez à un bureau pour une pratique réelleContinuez d'où vous êtes en utilisant l'une des options ci-dessous
Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 7
single

single

some-alt