Beginner Exercises : Grading

Welcome to my first attempt at the beginner exercises I found on cplusplus.com. Hopefully you can bear with me for some of the most asinine mistakes I made on this project. As a frame of reference, my only experience is with java and that was in college during Compsci 101; almost 2 years ago. You could rate my knowledge as little to none, so don’t ever let anybody tell you that you can’t learn c++ and don’t be afraid to make mistakes. I will post all my programs and the source code at the end of the blog if you want to see my train of thought or edit them yourself ( FYI, my organizational scheme is “name”V.R, where V is the version and R is the revision for referencing).

The grading problem is as follows:

Requires: variables, data types, and numerical operators
basic input/output
logic (if statements, switch statements)

Write a program that allows the user to enter the grade scored in a programming class (0-100).
If the user scored a 100 then notify the user that they got a perfect score.

★ Modify the program so that if the user scored a 90-100 it informs the user that they scored an A

★★ Modify the program so that it will notify the user of their letter grade
0-59 F 60-69 D 70-79 C 80-89 B 90-100 A

The premise of this problem is very simple; enter a numerical score for a grade on the exam and if they scored a 100 tell them they made a perfect score. Since they didn’t specify to check that the score is between 0 and 100 I decided to leave that out for now. (Maybe that will be an extra  reward.) I decided to tackle this problem in 3 versions: Check if they made a 100, add the first star challenge, and add the second start challenge.

I started simple with the program grade whose sole purpose was to ask the user for input, compare it, and then output. After compiling and holding my breath, since even my most basic programs like to throw errors, its time to run it. I first tested with 100 and 99, but to my surprise, they both work! Time to begin work on grade1.0.grade

My first train of thought was that I needed an else statement or the if statement would always execute. (Even I thought that that didn’t sound right.) So lets run it “once more again” and get the same exact output… time for grade1.1!grade1-0

This is when I decided to ask google for help and learned that = != ==. With this newly discovered knowledge the rest of this program would be a breeze. Or so I thought.grade1-1

On to 2.0 and and its time to add some extra features. I decided to use a quick and dirty fix to satisfy the conditions. I replaced (grade == 100) with (grade > 90). Compile, test and success!grade2-0

Its finally time to bring the whole project together and implement everything learned with grade3.0. This is where I made a majority of my errors and learned a few lessons along the way. I decided to use if statements with two conditions to check each threshold. The program worked, but it worked a little too well with a score of 100 outputting a grade of A,B,C,D, and failed.grade3-0

The addition of grade3.1 brought with it the knowledge that the operator || means OR and the operator && means AND. At this point I feel pretty stupid and hastily test my program again. This time I get the correct answer but also get “you failed”.

grade3-1

Another revision and we’re up to grade3.2 and my haste I devised a simple fix; just delete the else statement and everything will be fine. This would have worked if the “you failed” came from the else statement. I then realized that I used the wrong operation to check if the score was below sixty and thus 3.3 is born!grade3-3

However, 3.3 was short lived and else statement was removed once more making version 3.4.grade3-4

While testing 3.4 I discovered that numbers 90-100 worked correctly, however, 89 would output a grade of B and C. Easily enough it was another typo’d operation and finally grade3.5 is running smoothly!grade3-5

In closing, with basic knowledge and some trial and error, any task can be accomplished. I find that making mistakes and learning from them is a better learning tool than just copying some example projects and trying to decipher how they work. This style, in my personal opinion, helps you learn not why a program works, but how a program works.

Thank you for reading my story about my struggles with the C++ language and I hope you got a few laughs along the way. If you want to play with the source or run the code yourselves, you can find the whole project here. Stay tuned for more!

Goals

As a basic starter for my blog I have a few ideas for series I have started to work on and a few projects I have in mind to eventually dabble in. Here’s a brief rundown of whats in store for this site.

Kill the GUI is my idea for trying to go back to the simplicity of the command line interface of yesteryear. As a millennial I have been accustom to every operating system having a graphical interface. I feel that the power of the command line is lost in my generation.

Project Euler is where I will take on problems from Project Euler with the most basic knowledge in C++. I will strive to be completely transparent with my progress (mistakes and all). As a side note I also want to try a PE+ series where I try to add additional feature to my existing solutions.

Hardware Where I showcase hardware projects, reviews or ideas. Showcase setups and homebrews.

Story Time This will be some old lessons learned or situations where I had to adapt or learn on my feet.

Beginner Exercises is a set of example program ideas with additional bonus challenges. Each problem is centered around learning fundamental concepts behind programming. Here is a link to the article.

Future Projects:

  • A raspberry pi based hadoop cluster
  • home server running linux
  • experimenting with old hardware

TLDR: What’s coming in the next few weeks.