c++ programming project

I am currently studying C++ and I think I have I good understanding of all C++ concepts. However, no matter what text books I use I cannot find a good programming problem to test my C++ skills. I would like a project that uses several classes and uses inheritance, polymorphism etc.
Can anybody help? I can offer you more points for a good problem.

Thank you, Sean.
If you'd prefer to e-mail your solution : seanm_100@yahoo.com

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

SmanAuthor Commented:
Edited text of question.
I suppose it depends on how ambitious you want to be. :-)

I would suggest writing a maze creation and traversal program.

For example, you might want to set up one class that encapsulates the maze data structure, a base class and several inherited classes that print the maze out either to the screen or a text file format (basically a dump of the data structure you can read back in later to "load" your maze) (this will also let you practice polymorphism, because you should have a virtual method on the base class for print/dump that you can override in the subclasses depending on the type of output), one class that accesses the maze data class to traverse the maze, one that is finished yet another output class in your inheritance tree to output the traversal instructions along with the maze, etc.

As you can see, this is a program which you can keep adding to, is pretty fun to have lying around, and has a lot of potential variables. You can vary the size of the maze, complexity (% of dead ends, loops, etc) as you learn more about how your program works.

Good luck! :-)
O there are many programms of Crackers
game, but by meening of "askers", not
exeleent. If you want , you can
fix bugs and get giid programm.
If you interesting, URL's of crackes
i can post here.
Cloud Class® Course: Python 3 Fundamentals

This course will teach participants about installing and configuring Python, syntax, importing, statements, types, strings, booleans, files, lists, tuples, comprehensions, functions, and classes.

Not Crackers, of course: Checkers!
Checkers is 8x8?
I don't play checkers, but I do play draughts (10x10) and there are several programs (like TRUUS) that play on grandmaster level... I can't beat them, not in a thousend years :-)
Don't underestimate it, its high tech!
This is the problem i was doing at my university a month ago:

The program runs as a dialog with a single window. If the user clicks on the window, a rectangle is drawned on that point. This way the user can add as many rectangles to the screen as he wants to. If the user double-clicks the rectangle, it gets selected. The user can select any rectangle on the screen. If there are any rectangles selected already and the user clicks somewhere on the dialog, the selected rectangles are grouped and moved to the new location.

This is a good task to test C++ features. You can have any graphical shape - triangle, rectangle etc. You can use inheritance here. Use polymorphism in the draw() methods of the shapes. Use aggregation of the objects to group them. You can add various member functions to manipulate the shapes. You can add undo/redo mechanism to make your program work like a graphical editor. Test C++ features by changing the appearance of the shapes.

By doing this task i have implemented the Composite/Decorator/Strategy/Command patterns. These are OOP models which are on the hype in contemporary programming.

By the way, i have it done. I can send an *.exe file for ya :-)
Here's an interesting challenge...

Come up with a set of classes that will allow a file record to by composed dynamically and pocessed either as a whole record or as component fields.

A record might be a sequence of char and / or binary fields, and some fields may be composites of other fields - in effect mini records.

Fields may be fixed length (eg char[20[ or int) or may be some form of variable length (eg a CSV file).

It would be intended that one should be able to read/write/print/compare records and / or fields, and process fields within records.

It should be possible to compose a set of fields into a new record.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Warning, the following comment shows heavily my personal social leanings.

You might be going about this the wrong way.  I've found the best way to test my coding skill is to attempt to write something useful to myself or the open source community, release it once it can do something, and refine it until nothing else can be taken away.  If it's even marginally useful, you'll probably even get help.

Note that I steal a portion of a somewhat well known quote above in emphasizing, until nothing can be taken away, rather than until nothing can be added.

The most elegant solution to a problem doesn't always involve every trick in the C++ handbook, and getting into the habit of using inheritance, polymorphism, etc. for every problem might actually not be a good thing.

Also, it seems to me that writing a program just for the sake of throwing code together, especially if it will never be used afterwards, is kind of a waste.  Might as well be working on something that someone -- or you, yourself -- will use.  Isn't there anything you wanted to do with your computer that you can't currently do?  If nothing comes to mind, you can even get paid for some projects.  I suggest you look into the Free Software Bazaar at:


There are many requested projects there, with some small (and some not-so-small) donations attached to them.
A C++ Tutorial Project as your project.

How about making a tutorial object that teaches the concepts of C++!

You would have boxes with "private" sections and "public" sections.
You could pull lines from one to the other, inside and outside the object, and it will allow you or turn red.

You cannot pull a line from a virtual function, but when you highlight a function it's ancestors, including the virtual highligh up...

Etc. etc.  You decide what exactly you want to do!

By pressing a button you could "show" all the polymorphs, and why this one was chosen.

You could show how the compiler decides which function on which object to create automatically during construction etc.

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.