0
0
C++programming~20 mins

Real-world modeling in C++ - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Real-world Modeling Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of class inheritance and method overriding
What is the output of this C++ program modeling animals with inheritance and method overriding?
C++
#include <iostream>
using namespace std;

class Animal {
public:
    virtual void sound() { cout << "Some sound" << endl; }
};

class Dog : public Animal {
public:
    void sound() override { cout << "Bark" << endl; }
};

class Cat : public Animal {
public:
    void sound() override { cout << "Meow" << endl; }
};

int main() {
    Animal* a1 = new Dog();
    Animal* a2 = new Cat();
    a1->sound();
    a2->sound();
    delete a1;
    delete a2;
    return 0;
}
A
Bark
Meow
B
Some sound
Some sound
C
Bark
Some sound
D
Meow
Bark
Attempts:
2 left
πŸ’‘ Hint
Think about virtual functions and which method is called when using base class pointers.
🧠 Conceptual
intermediate
1:30remaining
Understanding encapsulation in a bank account model
Which of the following best describes the purpose of encapsulation in the BankAccount class below?
C++
class BankAccount {
private:
    double balance;
public:
    BankAccount(double initial) : balance(initial) {}
    void deposit(double amount) { if(amount > 0) balance += amount; }
    bool withdraw(double amount) {
        if(amount > 0 && amount <= balance) {
            balance -= amount;
            return true;
        }
        return false;
    }
    double getBalance() const { return balance; }
};
ATo hide the balance variable and control access through methods
BTo make balance a global variable
CTo allow direct access to balance from outside the class
DTo prevent the class from being inherited
Attempts:
2 left
πŸ’‘ Hint
Think about why balance is private and how deposit and withdraw work.
πŸ”§ Debug
advanced
2:00remaining
Identify the runtime error in the vehicle speed simulation
What runtime error will this C++ code produce when simulating vehicle speed changes?
C++
#include <iostream>
using namespace std;

class Vehicle {
public:
    int speed;
    Vehicle() : speed(0) {}
    void accelerate(int amount) {
        speed += amount;
    }
};

int main() {
    Vehicle* v = nullptr;
    v->accelerate(10);
    cout << v->speed << endl;
    return 0;
}
ALogical error: speed remains 0
BCompilation error: cannot call method on pointer
COutput: 10
DSegmentation fault (accessing null pointer)
Attempts:
2 left
πŸ’‘ Hint
What happens if you call a method on a null pointer?
πŸ“ Syntax
advanced
1:30remaining
Which option correctly defines a struct for a 2D point with a constructor?
Select the option that compiles without errors and correctly defines a struct Point with x and y coordinates and a constructor.
A
struct Point {
    int x, y;
    Point(int a, int b) { x = a; y = b; }
};
B
struct Point {
    int x, y;
    Point(int a, int b) { x: a; y: b; }
};
C
struct Point {
    int x, y;
    Point(int a, int b) : x(a), y(b) {}
};
D
struct Point {
    int x, y;
    Point(int a, int b) -&gt; x(a), y(b) {}
};
Attempts:
2 left
πŸ’‘ Hint
Look for correct constructor initialization syntax in C++.
πŸš€ Application
expert
2:30remaining
Calculate total area of mixed shapes using polymorphism
Given the classes below modeling shapes, what is the output of the program calculating total area?
C++
#include <iostream>
#include <vector>
#include <memory>
using namespace std;

class Shape {
public:
    virtual double area() const = 0;
    virtual ~Shape() = default;
};

class Rectangle : public Shape {
    double width, height;
public:
    Rectangle(double w, double h) : width(w), height(h) {}
    double area() const override { return width * height; }
};

class Circle : public Shape {
    double radius;
public:
    Circle(double r) : radius(r) {}
    double area() const override { return 3.14159 * radius * radius; }
};

int main() {
    vector<unique_ptr<Shape>> shapes;
    shapes.push_back(make_unique<Rectangle>(3, 4));
    shapes.push_back(make_unique<Circle>(2));
    double total = 0;
    for (const auto& shape : shapes) {
        total += shape->area();
    }
    cout << total << endl;
    return 0;
}
A25.56636
B24.56636
C12.56636
D18.56636
Attempts:
2 left
πŸ’‘ Hint
Calculate area of rectangle (3*4) and circle (Ο€*2Β²) and add them.