• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

Need C++ project ideas!

Joined
Sep 10, 2008
Messages
532 (0.09/day)
Location
VA/PA
System Name Freyja
Processor Core i7 3770K
Motherboard AsRock Z77 Extreme4
Cooling Cooler Master Hyper 212 EVO
Memory 16 GB GSkill Sniper
Video Card(s) Diamond Radeon HD 7970
Storage Kingston HyperX 240 GB SSD + Seagate 2 TB HD
Display(s) Dell U2410
Case NZXT Tempest 210
Audio Device(s) Asus Xonar Essence STX
Power Supply Seasonic X-Series 750W
Software Ubuntu 13.04 64 bit
So I have to learn a little C++ for a freshman eng class, and in the future, with the degree I plan to go for, I imagine I'll have to learn a lot more C++. So I decided to go ahead a teach myself more than the class I'm currently in will (found a tutorial, and I can find more stuff online when the time comes). The issue is that I need ideas for programs to write so I can apply what I learn, and I cannot come up with any on my own. So TPU, what are some good C++ projects? Can be a wide array of difficulty, as I can tackle the harder ones in the future (I hope :p)
 
Joined
Oct 2, 2005
Messages
3,059 (0.45/day)
Location
Baltimore MD
Processor Ryzen 5900X
Motherboard ASUS Prime X470 Pro
Cooling Arctic liquid freezer II 240
Memory 2 x 16 Gb Gskill Trident Z 3600 Mhz
Video Card(s) MSI Ventus 3060 Ti OC
Storage Samsung 960 EVO 500 Gb / 860 EVO 1 Tb
Display(s) Dell S2719DGF
Case Lian Li Lancool II Mesh
Audio Device(s) Soundblaster Z
Power Supply Corsair RM850x
Mouse Logitech G703
Keyboard Logitech G513
Software Win 11
its a shot in the dark but something to group edit media tags like on videos and pictures would be something useful.
 
Joined
Feb 18, 2010
Messages
1,850 (0.36/day)
System Name Eldritch
Processor AMD Ryzen 5 5800X3D
Motherboard ASUS TUF X570 Pro Wifi
Cooling Satan's butthole after going to Taco Bell
Memory 64 GB G.Skill TridentZ
Video Card(s) Vega 56
Storage 6*8TB Western Digital Blues in RAID 6, 2*512 GB Samsung 960 Pros
Display(s) Acer CB281HK
Case Phanteks Enthoo Pro PH-ES614P_BK
Audio Device(s) ASUS Xonar DX
Power Supply EVGA Supernova 750 G2
Mouse Razer Viper 8K
Software Debian Bullseye
Try to see if you can't make a program to draw a perfect circle, no matter what the resolution of the picture is.
 
Joined
Sep 10, 2008
Messages
532 (0.09/day)
Location
VA/PA
System Name Freyja
Processor Core i7 3770K
Motherboard AsRock Z77 Extreme4
Cooling Cooler Master Hyper 212 EVO
Memory 16 GB GSkill Sniper
Video Card(s) Diamond Radeon HD 7970
Storage Kingston HyperX 240 GB SSD + Seagate 2 TB HD
Display(s) Dell U2410
Case NZXT Tempest 210
Audio Device(s) Asus Xonar Essence STX
Power Supply Seasonic X-Series 750W
Software Ubuntu 13.04 64 bit
Thanks guys for the quick responses. Keep 'em coming, even if the idea seems stupidly easy or hard.
 

streetfighter 2

New Member
Joined
Jul 26, 2010
Messages
1,655 (0.33/day)
Location
Philly
I'd start with data structures. Create a linked list and/or hash table using nothing more than pointers and basic variable types (so you can't #include <vector>). Being able to create your own data structures will help you when thinking about solving problems using programming.

You can also do some work in algorithms. If you want something really basic try solving the knapsack problem by implementing the greedy algorithm in C++. For a slightly larger challenge you can try implementing Dijkstra's algorithm (but it may require a math background).

Now if everything I've said up to this point is spitting in the wind then I'd suggest you try something incredibly fundamental:
"You need to go to work every day, and you need to come back home every night. You have an umbrella, but you only bring it with you when it's raining. So if it rains in the morning and your umbrella is at your house then you will bring your umbrella to work; but if it doesn't rain in the evening you'll leave your umbrella at work. If I gave you the probability that it rains in the morning, lets call it M, and the probability that it rains in the evening, lets call it E, what's the probability that on any given day you'll be caught in the rain without your umbrella?

Solve it by running a large simulation of several thousand (or more) days and keeping track of how many days you get caught in the rain without an umbrella.
"

If by some chance you've done everything I just said, then try writing multi-threaded programs: create your own multi-threaded merge-sort; solve the dining philosophers problem using semaphores; create a local chat client using shared memory or pipes

BTW, most of the projects I mentioned were picked specifically because solutions to them in C++ are widely available. No one should be forced to learn without examples IMO :).
 
Last edited:

matobinder

New Member
Joined
Jan 27, 2011
Messages
4 (0.00/day)
I'd vote to think data. Skip anything to do with a GUI/Graphics. All that is just bells and whistles.(but yes that can be where the money is...)

Adding a GUI just complicates the matter. Your objective is to learn C++.

With that said. You need something to muck with. If you don't have a GUI you need something tangible.

This is where I thought a Data Systems class I took was helpful. Yes that was about 15 years ago, but the idea still holds the same and you will learn whatever language you are using...

let me make up a problem. Lets go start with the cast of this movie.

MachineX: This machine eats fig newtons.
UserY : This machine is interested in how MachineX is doing.
ProcessX: This program reads in data data about what MachineX is doing and passes it to UserY


So your goal is to write ProcessX. What does our Manual about MachineX say?
MachineX logs its metrics data to a local file called XYZ. It closes out this file once a day, and renames it abcdefg.date. The data in this file is continuous, and represents the following format.

The first 16 bytes is the header:
The next 256 bytes is the data:

header is defined as
{
byte 0-7 time stamp
byte 8-12 is IP address
byte 13-15 is unused
}

data is defined as
{
byte 0-3 : Something ABC
byte 4-7 : Something blah
byte 8-15 : Something 16 bit...
byte... you get the picture
}

----
So that was the end of our simple manual on what MachineX does.

SO write ProcessX to read in these binary files, i.e first the header, then the data and repeat. Parse the info out. And then print a simple text report for UserY.

Heck here, if you want a GUI, make your data logical that would fit into a nice plot. Spit it out into a CSV and load it into a spreadsheet.

This makes sense to me. Hopefully more than just me. If you want to learn a language, first throw out anything thought of a GUI and focus on the basics. Data. Deal with data. Think about a GUI later.
 

matobinder

New Member
Joined
Jan 27, 2011
Messages
4 (0.00/day)
Oh, I forgot my last part. Now the trick in all if this was in the details in the manual that I made up.

"MachineX logs its metrics data to a local file called XYZ. It closes out this file once a day, and renames it abcdefg.date. The data in this file is continuous, and represents the following format."

What this is telling you is that you are going to need to be reading data from a file in a certain directory. That file may be archive(moved) while you are reading it. It may grow in size. But there will always be a set of data in that directory. With a timestamped named on the file.

The simplest thing you can do is tell your User that they will only get data over 24 hours old. That way you don't need to worry about MachineX renaming/moving the file on you. UserX won't like that. So now is where it gets tricky.

The best part is this is all your own world. Start out with writing a simple MachineX that is really really nice. Don't have it do anything when you don't want it to.

Write your app to read that data in.

Now start making MachineX evil. Make sure your app can handle that data in a sane manner
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.20/day)
Location
Cheeseland (Wisconsin, USA)
I'd vote to think data. Skip anything to do with a GUI/Graphics. All that is just bells and whistles.(

... and matrix transformation, vector mathematics, collision detection, artificial intelligencs, data structures, state machines, etc. I would hardly call it just "bells and whistles".

But anyway, how about writing a program that will take a file and encrypt it and then compress it. A good exercise in several areas.
 

streetfighter 2

New Member
Joined
Jul 26, 2010
Messages
1,655 (0.33/day)
Location
Philly
... and matrix transformation, vector mathematics, collision detection, artificial intelligencs, data structures, state machines, etc. I would hardly call it just "bells and whistles".

But anyway, how about writing a program that will take a file and encrypt it and then compress it. A good exercise in several areas.

Having written a lot of programs doing rather complex matrix/vector calculations for engineering finance, I can tell you that you don't need a GUI ;). Also state machines, data structures, artificial intelligence, many physics/fluid simulations, statistics (matrices anyone? :laugh:) etc. (ad nauseam) can be done without any GUI whatsoever (but you'll probably want to plot the results later:D). I've never done collision detection (at least not that I'm aware of).
 
Joined
Sep 10, 2008
Messages
532 (0.09/day)
Location
VA/PA
System Name Freyja
Processor Core i7 3770K
Motherboard AsRock Z77 Extreme4
Cooling Cooler Master Hyper 212 EVO
Memory 16 GB GSkill Sniper
Video Card(s) Diamond Radeon HD 7970
Storage Kingston HyperX 240 GB SSD + Seagate 2 TB HD
Display(s) Dell U2410
Case NZXT Tempest 210
Audio Device(s) Asus Xonar Essence STX
Power Supply Seasonic X-Series 750W
Software Ubuntu 13.04 64 bit
Thanks ya'll. I did a bit of googling (googleing?) and found a good amount of project ideas as well. However, if you guys still have other ideas that might make a good project, don't hesitate to post it. I'm putting all the ideas in a word doc so I can I don't forget 'em ;)
 

matobinder

New Member
Joined
Jan 27, 2011
Messages
4 (0.00/day)
Yes, I wanted to keep it simple... but complex enough to justify writing it in C/C++


Something really neat to write, but does add the need to dig into whatever OS internals you are on. Is a simple tool to take a directory name, and tell you want files are in it. You can then go farther, and decide "hey if its a jpg I can tell you more" since that is a nice defined type to be able to parse as a 3rd party.

But my basic statement still holds true I think. Don't worry about a big GUI presentation. Just have it be cout text. Try to deal with data. Whatever data you feel like. Just don't get caught up in the presentation of it.
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.20/day)
Location
Cheeseland (Wisconsin, USA)
Having written a lot of programs doing rather complex matrix/vector calculations for engineering finance, I can tell you that you don't need a GUI ;). Also state machines, data structures, artificial intelligence, many physics/fluid simulations, statistics (matrices anyone? :laugh:) etc. (ad nauseam) can be done without any GUI whatsoever (but you'll probably want to plot the results later:D). I've never done collision detection (at least not that I'm aware of).

SF2, you are absolutely correct. But no one ever screamed "HEADSHOT" while running one of those programs. rofl

@Mael ... You could always write a text only version of Tetris. :rockout:
 
Joined
Sep 10, 2008
Messages
532 (0.09/day)
Location
VA/PA
System Name Freyja
Processor Core i7 3770K
Motherboard AsRock Z77 Extreme4
Cooling Cooler Master Hyper 212 EVO
Memory 16 GB GSkill Sniper
Video Card(s) Diamond Radeon HD 7970
Storage Kingston HyperX 240 GB SSD + Seagate 2 TB HD
Display(s) Dell U2410
Case NZXT Tempest 210
Audio Device(s) Asus Xonar Essence STX
Power Supply Seasonic X-Series 750W
Software Ubuntu 13.04 64 bit
@Mael ... You could always write a text only version of Tetris

Lol that sounds awesome :roll:. If I do, I'm totally making it like the college humor video:
Tetris God (watch it, it's funny)

LINE PIECE!!!!!
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.20/day)
Location
Cheeseland (Wisconsin, USA)
One of my early coding endeavors was on my TI99/4A (16K RAM).
I wrote a simple game where you were looking down a hallway at an intersection.
Randomly a space ship would fly across the hallway for you to shoot at.
It worked great until I wrote the collision detection, which ran it out of memory. :laugh:

My advice is to not just pick random projects, but pick something that interests you.
In my experience, the normal school projects are rather boring little exercises.

It all depends upon your experience too.
Many years ago a good friend of mine (I consider him a mentor) was working on a CS project for his Masters in CS and Electronic Engineering, and I asked him about the project.
He shrugged and said, "We have to write a compiler parser. A quaint little exercise." :wtf:
I look back now and realize that would be rather droll and tedious.
 

ctrain

New Member
Joined
Jan 12, 2010
Messages
393 (0.08/day)
I found it a lot of fun to get into graphics stuff. My first project was a simple 2d scrolling starfield effect. It's very simple once you think about it and it's fun to watch. Later you can branch into a simple 3d one is only a little more so since it's super simple to do the 3d transform if your view is centered in the world, no matrix or vector math needed.

Basic drawing is simple to set up on Windows.
 
Joined
Sep 10, 2008
Messages
532 (0.09/day)
Location
VA/PA
System Name Freyja
Processor Core i7 3770K
Motherboard AsRock Z77 Extreme4
Cooling Cooler Master Hyper 212 EVO
Memory 16 GB GSkill Sniper
Video Card(s) Diamond Radeon HD 7970
Storage Kingston HyperX 240 GB SSD + Seagate 2 TB HD
Display(s) Dell U2410
Case NZXT Tempest 210
Audio Device(s) Asus Xonar Essence STX
Power Supply Seasonic X-Series 750W
Software Ubuntu 13.04 64 bit
Thanks for all the ideas and advice guys, I really appreciated it! Oh and Kreij, while you are correct that the school projects are generally "boring", they can be hilariously fun when you know more than you should and add stuff that shouldn't be there (but that actually helps the program). Or at least, I found it fun xD
 

Bot

Joined
Apr 14, 2009
Messages
594 (0.11/day)
System Name BoTBlue
Processor Intel i7-3770
Motherboard Intel DQ77MK
Cooling Corsair H80
Memory Samsung 4x4Gb
Video Card(s) ASUS GTX 470
Storage OCZ Vertex LE
Display(s) Acer
Case AthenaTech
Power Supply Corsair 850w
Software Win 7 Pro x64
how about a refrigerator inventory program that automatically creates a shopping list with re-order items. best of all, integrated barcode scanner.
something is empty, scan it and it automatically gets taken off the inventory and added to the re-order list, which can then be printed out. :rockout:
 
Joined
Sep 10, 2008
Messages
532 (0.09/day)
Location
VA/PA
System Name Freyja
Processor Core i7 3770K
Motherboard AsRock Z77 Extreme4
Cooling Cooler Master Hyper 212 EVO
Memory 16 GB GSkill Sniper
Video Card(s) Diamond Radeon HD 7970
Storage Kingston HyperX 240 GB SSD + Seagate 2 TB HD
Display(s) Dell U2410
Case NZXT Tempest 210
Audio Device(s) Asus Xonar Essence STX
Power Supply Seasonic X-Series 750W
Software Ubuntu 13.04 64 bit
how about a refrigerator inventory program that automatically creates a shopping list with re-order items. best of all, integrated barcode scanner.
something is empty, scan it and it automatically gets taken off the inventory and added to the re-order list, which can then be printed out.

That's actually a really cool idea, thx!
 
  • Like
Reactions: Bot
Joined
Aug 26, 2009
Messages
321 (0.06/day)
System Name First Build 2.0
Processor AMD FX-8320 Eight-Core @3.5
Motherboard Gigabyte GA-990FXA-UD3 rev. 4
Cooling Stock AMD
Memory 16 GB (4x4GB) G.Skill
Video Card(s) XFX Radeon HD 6870 1 GB
Storage SSD- Seagate 600 Series ST240HM000 240 GB
Display(s) Asus VE248H / ViewSonic VA1912wb
Case Cooler Master Storm Scout
Audio Device(s) Onboard
Power Supply Corsair TX550M
Software 7 Ultimate 64
how about a refrigerator inventory program that automatically creates a shopping list with re-order items. best of all, integrated barcode scanner.
something is empty, scan it and it automatically gets taken off the inventory and added to the re-order list, which can then be printed out. :rockout:

that would be amazing.
 

olithereal

New Member
Joined
May 24, 2008
Messages
1,262 (0.22/day)
System Name Geometro
Processor i5 760 @ Stock (need 1156 brackets for my cooler)
Motherboard MSI P55A-G55
Cooling Kingwin RVT-12025 HDT
Memory 2x4GB Mushkin Blackline Frostbyte 1600 C9-9-9-24
Video Card(s) GTX 275 MSI Twin Frozr OC
Display(s) Samsung 2333SW 23"
Case Lancool PC-K62
Power Supply Corsair VX550W 550W ATX 12V
Software Windows 7 64 bit / Arch Linux x64
Hey guys, just want do stop by and say that I've been looking at project ideas for C++ too, and that I have saved all of yours! It's good stuff, hoping to get on that soon, when I get some time!

College semester just started so I don't have much time. Network Programming class and COBOL (fuck yeah!) class' exercises take a huge amount of time, so yeah. When I get more time I'll jump on these!
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.20/day)
Location
Cheeseland (Wisconsin, USA)
how about a refrigerator inventory program that automatically creates a shopping list with re-order items. best of all, integrated barcode scanner.
something is empty, scan it and it automatically gets taken off the inventory and added to the re-order list, which can then be printed out. :rockout:

I was thinking about this and it would really be pretty easy to code.

Hmmm .. so did someone else. Looks like it took them about 10 hours to do it as an online app using Python and MySql.
Grocist
His does not appear to keep a running inventory list, though, just what to re-order. Still a cool idea.
 

W1zzard

Administrator
Staff member
Joined
May 14, 2004
Messages
27,029 (3.71/day)
Processor Ryzen 7 5700X
Memory 48 GB
Video Card(s) RTX 4080
Storage 2x HDD RAID 1, 3x M.2 NVMe
Display(s) 30" 2560x1600 + 19" 1280x1024
Software Windows 10 64-bit
make that an iphone/android app using the integrated camera that creates the shopping list for you on the device
 

Bot

Joined
Apr 14, 2009
Messages
594 (0.11/day)
System Name BoTBlue
Processor Intel i7-3770
Motherboard Intel DQ77MK
Cooling Corsair H80
Memory Samsung 4x4Gb
Video Card(s) ASUS GTX 470
Storage OCZ Vertex LE
Display(s) Acer
Case AthenaTech
Power Supply Corsair 850w
Software Win 7 Pro x64
I was thinking about this and it would really be pretty easy to code.

Hmmm .. so did someone else. Looks like it took them about 10 hours to do it as an online app using Python and MySql.
Grocist
His does not appear to keep a running inventory list, though, just what to re-order. Still a cool idea.

thanks, that is pretty .. RSS feed for a grocery list? nice
 

Kreij

Senior Monkey Moderator
Joined
Feb 6, 2007
Messages
13,817 (2.20/day)
Location
Cheeseland (Wisconsin, USA)
Have you picked a project, Mael? If so what are you working on?
Inquiring minds want to know !! lol
 
Top