Bird
Raised Fist0
C++programming~20 mins

Nested structures in C++ - Mini Project: Build & Apply

Choose your learning style10 modes available
Nested structures
📖 Scenario: You are creating a simple program to store information about a book and its author. The author has a name and an age. The book has a title, a year of publication, and an author.
🎯 Goal: Build a program that uses nested structures to store and display information about a book and its author.
📋 What You'll Learn
Create a structure called Author with two members: name (string) and age (int).
Create a structure called Book with three members: title (string), year (int), and author (of type Author).
Create a variable myBook of type Book and assign the exact values: title = "The Great Adventure", year = 2020, author name = "John Smith", author age = 45.
Print the book's title, year, author's name, and author's age exactly as shown in the final output.
💡 Why This Matters
🌍 Real World
Nested structures help organize related data clearly, like storing book and author information together.
💼 Career
Understanding nested structures is important for managing complex data in software development, such as databases, file formats, and APIs.
Progress0 / 4 steps
1
Create the nested structures
Define a structure called Author with members name (string) and age (int). Then define a structure called Book with members title (string), year (int), and author (of type Author).
C++
Hint

Use struct keyword to define each structure. The Book structure should include an Author type member.

2
Create a variable with exact values
Inside main(), create a variable called myBook of type Book. Assign title to "The Great Adventure", year to 2020, author.name to "John Smith", and author.age to 45.
C++
Hint

Use dot notation to assign values to nested members like myBook.author.name.

3
Print the book and author details
Use cout to print the book's title, year, author's name, and author's age in this exact format:
Title: The Great Adventure
Year: 2020
Author: John Smith
Author Age: 45
C++
Hint

Use cout with << to print each line exactly as shown.

4
Display the final output
Run the program and ensure it prints exactly:
Title: The Great Adventure
Year: 2020
Author: John Smith
Author Age: 45
C++
Hint

Make sure your output matches exactly, including spaces and line breaks.

Practice

(1/5)
1. What is the main purpose of using nested structures in C++?
easy
A. To allow structures to inherit functions
B. To create multiple inheritance between classes
C. To increase the size of a structure unnecessarily
D. To group related data logically inside another structure

Solution

  1. Step 1: Understand nested structures concept

    Nested structures let you put one structure inside another to group related data logically.
  2. Step 2: Compare options

    Only To group related data logically inside another structure correctly describes grouping data logically. Other options describe unrelated concepts.
  3. Final Answer:

    To group related data logically inside another structure -> Option D
  4. Quick Check:

    Nested structures = group data logically [OK]
Hint: Think of nested structures as folders inside folders [OK]
Common Mistakes:
  • Confusing nested structures with inheritance
  • Thinking nested structures increase structure size unnecessarily
  • Assuming nested structures add functions
2. Which of the following is the correct syntax to access member city inside a nested structure address within person?
easy
A. person->address.city
B. person.address.city
C. person.address->city
D. person->address->city

Solution

  1. Step 1: Identify access operator for nested structures

    When accessing members of nested structures by variable (not pointer), use dot operator for each level.
  2. Step 2: Apply to given example

    Since person is a variable, access address with dot, then city with dot: person.address.city.
  3. Final Answer:

    person.address.city -> Option B
  4. Quick Check:

    Use dot for nested struct members when variable, not pointer [OK]
Hint: Use dot operator for nested struct members if not pointers [OK]
Common Mistakes:
  • Using arrow operator (->) when variable is not a pointer
  • Mixing dot and arrow operators incorrectly
  • Trying to access nested member directly without parent
3. What will be the output of the following code?
struct Date {
  int day;
  int month;
};
struct Event {
  char name[10];
  Date date;
};

int main() {
  Event e = {"Party", {25, 12}};
  std::cout << e.name << " on " << e.date.day << "/" << e.date.month << std::endl;
  return 0;
}
medium
A. Party on 25/12
B. Party on 12/25
C. Compilation error
D. Party on 0/0

Solution

  1. Step 1: Understand structure initialization

    Event e is initialized with name "Party" and Date with day=25, month=12.
  2. Step 2: Trace output statement

    Output prints e.name, then e.date.day (25), then e.date.month (12) separated by slashes.
  3. Final Answer:

    Party on 25/12 -> Option A
  4. Quick Check:

    Nested struct initialized correctly = Party on 25/12 [OK]
Hint: Match initialization order with nested structure fields [OK]
Common Mistakes:
  • Swapping day and month values
  • Assuming compilation error due to nested struct
  • Forgetting to use dot operator to access nested members
4. Identify the error in the following code snippet:
struct Point {
  int x, y;
};
struct Rectangle {
  Point topLeft;
  Point bottomRight;
};

int main() {
  Rectangle rect;
  rect.topLeft->x = 0;
  rect.topLeft->y = 10;
  return 0;
}
medium
A. Using arrow operator (->) on a non-pointer structure variable
B. Missing semicolon after struct definitions
C. Incorrect member names in Rectangle
D. Rectangle struct cannot contain Point structs

Solution

  1. Step 1: Check member access operators

    rect.topLeft is a structure variable, not a pointer, so dot operator (.) must be used, not arrow (->).
  2. Step 2: Identify error cause

    Using -> on non-pointer causes compilation error.
  3. Final Answer:

    Using arrow operator (->) on a non-pointer structure variable -> Option A
  4. Quick Check:

    Use dot for struct variables, arrow for pointers [OK]
Hint: Use dot for struct variables, arrow only for pointers [OK]
Common Mistakes:
  • Confusing dot and arrow operators
  • Assuming arrow works for all struct members
  • Ignoring compiler error messages
5. Given the following nested structures, how would you write a function printBookInfo that prints the book title and the author's city?
struct Author {
  char name[50];
  char city[30];
};
struct Book {
  char title[100];
  Author author;
};
hard
A. void printBookInfo(Book b) { std::cout << b.title << ", " << b.author->city << std::endl; }
B. void printBookInfo(Book b) { std::cout << b.title << ", " << b.city << std::endl; }
C. void printBookInfo(Book b) { std::cout << b.title << ", " << b.author.city << std::endl; }
D. void printBookInfo(Book b) { std::cout << b->title << ", " << b->author.city << std::endl; }

Solution

  1. Step 1: Understand structure member access

    Book variable b has member title and nested structure author. Access author.city with dot operator.
  2. Step 2: Check each option

    void printBookInfo(Book b) { std::cout << b.title << ", " << b.author.city << std::endl; } correctly uses b.title and b.author.city with dot operators. Others misuse arrow or omit author.
  3. Final Answer:

    void printBookInfo(Book b) { std::cout << b.title << ", " << b.author.city << std::endl; } -> Option C
  4. Quick Check:

    Access nested struct members with dot: b.author.city [OK]
Hint: Use dot operator for nested struct members in function parameters [OK]
Common Mistakes:
  • Using arrow operator on non-pointer parameter
  • Skipping nested struct name when accessing member
  • Using pointer syntax incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard