This is my first program I really created besides hello world. The code is over 400 lines of code and wanted to know of new functions and what not that would help improve my code and my knowledge of C++. I figured I would just dive in and learn on my own instead of out of the book I have “Teach yourself C++ in one hour a day 6th edition”.
What are some new functions I can learn that would improve my code?
// Runescape Mining Calculator
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int lvl;
int exp;
int result;
cout << " \t\t\tRunescape Skill Calculator" << endl;
cout << " Enter Target level: ";
cin>>lvl;
switch(lvl)
{
case 2: cout << " What is your current experience? ";;
cin >> exp;
result=83 - exp;
break;
case 3: cout << " What is your current experience? ";
cin >> exp;
result=174 - exp;
break;
case 4: cout << " What is your current experience? ";
cin >> exp;
result=276 - exp;
break;
case 5: cout << " What is your current experience? ";
cin >> exp;
result=388 - exp;
break;
case 6: cout << " What is your current experience? ";
cin >> exp;
result=512 - exp;
break;
case 7: cout << " What is your current experience? ";
cin >> exp;
result=650 - exp;
break;
case 8: cout << " What is your current experience? ";
cin >> exp;
result=801 - exp;
break;
case 9: cout << " What is your current experience? ";
cin >> exp;
result=969 - exp;
break;
case 10: cout << " What is your current experience? ";
cin >> exp;
result=1154 - exp;
break;
case 11: cout << " What is your current experience? ";
cin >> exp;
result=1358 - exp;
break;
case 12: cout << " What is your current experience? ";
cin >> exp;
result=1584 - exp;
break;
case 13: cout << " What is your current experience? ";
cin >> exp;
result=1833 - exp;
break;
case 14: cout << " What is your current experience? ";
cin >> exp;
result=2107 - exp;
break;
case 15: cout << " What is your current experience? ";
cin >> exp;
result=2411 - exp;
break;
case 16: cout << " What is your current experience? ";
cin >> exp;
result=2746 - exp;
break;
case 17: cout << " What is your current experience? ";
cin >> exp;
result=3115 - exp;
break;
case 18: cout << " What is your current experience? ";
cin >> exp;
result=3523 - exp;
break;
case 19: cout << " What is your current experience? ";
cin >> exp;
result=3973 - exp;
break;
case 20: cout << " What is your current experience? ";
cin >> exp;
result=4470 - exp;
break;
case 21: cout << " What is your current experience? ";
cin >> exp;
result=5018 - exp;
break;
case 22: cout << " What is your current experience? ";
cin >> exp;
result=5624 - exp;
break;
case 23: cout << " What is your current experience? ";
cin >> exp;
result=6291 - exp;
break;
case 24: cout << " What is your current experience? ";
cin >> exp;
result=7028 - exp;
break;
case 25: cout << " What is your current experience? ";
cin >> exp;
result=7842 - exp;
break;
case 26: cout << " What is your current experience? ";
cin >> exp;
result=8740 - exp;
break;
case 27: cout << " What is your current experience? ";
cin >> exp;
result=9730 - exp;
break;
case 28: cout << " What is your current experience? ";
cin >> exp;
result=10824 - exp;
break;
case 29: cout << " What is your current experience? ";
cin >> exp;
result=12031 - exp;
break;
case 30: cout << " What is your current experience? ";
cin >> exp;
result=13363 - exp;
break;
case 31: cout << " What is your current experience? ";
cin >> exp;
result=14833 - exp;
break;
case 32: cout << " What is your current experience? ";
cin >> exp;
result=16456 - exp;
break;
case 33: cout << " What is your current experience? ";
cin >> exp;
result=18247 - exp;
break;
case 34: cout << " What is your current experience? ";
cin >> exp;
result=20224 - exp;
break;
case 35: cout << " What is your current experience? ";
cin >> exp;
result=22406 - exp;
break;
case 36: cout << " What is your current experience? ";
cin >> exp;
result=24815 - exp;
break;
case 37: cout << " What is your current experience? ";
cin >> exp;
result=27473 - exp;
break;
case 38: cout << " What is your current experience? ";
cin >> exp;
result=30408 - exp;
break;
case 39: cout << " What is your current experience? ";
cin >> exp;
result=33648 - exp;
break;
case 40: cout << " What is your current experience? ";
cin >> exp;
result=37224 - exp;
break;
case 41: cout << " What is your current experience? ";
cin >> exp;
result=41171 - exp;
break;
case 42: cout << " What is your current experience? ";
cin >> exp;
result=45529 - exp;
break;
case 43: cout << " What is your current experience? ";
cin >> exp;
result=50339- exp;
break;
case 44: cout << " What is your current experience? ";
cin >> exp;
result=55649 - exp;
break;
case 45: cout << " What is your current experience? ";
cin >> exp;
result=61512 - exp;
break;
case 46: cout << " What is your current experience? ";
cin >> exp;
result=67983 - exp;
break;
case 47: cout << " What is your current experience? ";
cin >> exp;
result=75127 - exp;
break;
case 48: cout << " What is your current experience? ";
cin >> exp;
result=83014 - exp;
break;
case 49: cout << " What is your current experience? ";
cin >> exp;
result=91721 - exp;
break;
case 50: cout << " What is your current experience? ";
cin >> exp;
result=101333 - exp;
break;
case 51: cout << " What is your current experience? ";
cin >> exp;
result=111945 - exp;
break;
case 52: cout << " What is your current experience? ";
cin >> exp;
result=123660 - exp;
break;
case 53: cout << " What is your current experience? ";
cin >> exp;
result=136594 - exp;
break;
case 54: cout << " What is your current experience? ";
cin >> exp;
result=150872 - exp;
break;
case 55: cout << " What is your current experience? ";
cin >> exp;
result=166636 - exp;
break;
case 56: cout << " What is your current experience? ";
cin >> exp;
result=184040 - exp;
break;
case 57: cout << " What is your current experience? ";
cin >> exp;
result=203254 - exp;
break;
case 58: cout << " What is your current experience? ";
cin >> exp;
result=224466 - exp;
break;
case 59: cout << " What is your current experience? ";
cin >> exp;
result=247886 - exp;
break;
case 60: cout << " What is your current experience? ";
cin >> exp;
result=273742 - exp;
break;
case 61: cout << " What is your current experience? ";
cin >> exp;
result=302288 - exp;
break;
case 62: cout << " What is your current experience? ";
cin >> exp;
result=333804 - exp;
break;
case 63: cout << " What is your current experience? ";
cin >> exp;
result=368599 - exp;
break;
case 64: cout << " What is your current experience? ";
cin >> exp;
result=407015 - exp;
break;
case 65: cout << " What is your current experience? ";
cin >> exp;
result=449428 - exp;
break;
case 66: cout << " What is your current experience? ";
cin >> exp;
result=496254 - exp;
break;
case 67: cout << " What is your current experience? ";
cin >> exp;
result=547953 - exp;
break;
case 68: cout << " What is your current experience? ";
cin >> exp;
result=605032 - exp;
break;
case 69: cout << " What is your current experience? ";
cin >> exp;
result=668051 - exp;
break;
case 70: cout << " What is your current experience? ";
cin >> exp;
result=737627 - exp;
break;
case 71: cout << " What is your current experience? ";
cin >> exp;
result=814445 - exp;
break;
case 72: cout << " What is your current experience? ";
cin >> exp;
result=899257 - exp;
break;
case 73: cout << " What is your current experience? ";
cin >> exp;
result=992895 - exp;
break;
case 74: cout << " What is your current experience? ";
cin >> exp;
result=1096278 - exp;
break;
case 75: cout << " What is your current experience? ";
cin >> exp;
result=1210421 - exp;
break;
case 76: cout << " What is your current experience? ";
cin >> exp;
result=1336443 - exp;
break;
case 77: cout << " What is your current experience? ";
cin >> exp;
result=1475581 - exp;
break;
case 78: cout << " What is your current experience? ";
cin >> exp;
result=1629200 - exp;
break;
case 79: cout << " What is your current experience? ";
cin >> exp;
result=1798808 - exp;
break;
case 80: cout << " What is your current experience? ";
cin >> exp;
result=1986068 - exp;
break;
case 81: cout << " What is your current experience? ";
cin >> exp;
result=2192818 - exp;
break;
case 82: cout << " What is your current experience? ";
cin >> exp;
result=2421087 - exp;
break;
case 83: cout << " What is your current experience? ";
cin >> exp;
result=2673114 - exp;
break;
case 84: cout << " What is your current experience? ";
cin >> exp;
result=2951373 - exp;
break;
case 85: cout << " What is your current experience? ";
cin >> exp;
result=3258594 - exp;
break;
case 86: cout << " What is your current experience? ";
cin >> exp;
result=3597792 - exp;
break;
case 87: cout << " What is your current experience? ";
cin >> exp;
result=3972294 - exp;
break;
case 88: cout << " What is your current experience? ";
cin >> exp;
result=4385776 - exp;
break;
case 89: cout << " What is your current experience? ";
cin >> exp;
result=4842295 - exp;
break;
case 90: cout << " What is your current experience? ";
cin >> exp;
result=5346332 - exp;
break;
case 91: cout << " What is your current experience? ";
cin >> exp;
result=5902831 - exp;
break;
case 92: cout << " What is your current experience? ";
cin >> exp;
result=6517253 - exp;
break;
case 93: cout << " What is your current experience? ";
cin >> exp;
result=7195629 - exp;
break;
case 94: cout << " What is your current experience? ";
cin >> exp;
result=7944614 - exp;
break;
case 95: cout << " What is your current experience? ";
cin >> exp;
result=8771558 - exp;
break;
case 96: cout << " What is your current experience? ";
cin >> exp;
result=9684577 - exp;
break;
case 97: cout << " What is your current experience? ";
cin >> exp;
result=10692629 - exp;
break;
case 98: cout << " What is your current experience? ";
cin >> exp;
result=11805606 - exp;
break;
case 99: cout << " What is your current experience? ";
cin >> exp;
result=13034431 - exp;
case 100: cout << " What is your current experience? " <<endl;
cin >> exp;
result=14391160 - exp;
break;
default: exit(0);
}
cout << " Experience Needed: " << result << endl;
// Ores needed to be mined to acquire the level up.
cout << " Rune Essence: " << ceil(result/5.0) << endl;
cout << " Clay: " << ceil(result/5.0) << endl;
cout << " Copper: " << ceil(result/17.5) << endl;
cout << " Tin: " << ceil(result/17.5) << endl;
cout << " Bluerite: " << ceil(result/17.5) << endl;
cout << " Iron: " << ceil(result/35.0) << endl;
cout << " Silver: " << ceil(result/40.0) << endl;
cout << " Coal: " << ceil(result/50.0) << endl;
cout << " Gold: " << ceil(result/65.0) << endl;
cout << " Mithril: " << ceil(result/80.0) << endl;
cout << " Adamant: " << ceil(result/ 95.0) << endl;
cout << " Runite: " << ceil(result/125.0) << endl;
cout << endl << endl << endl << "\t\t\tCreated by USDblades" << endl;
return 0;
}
Edit: Sorry was not clear. I am trying to improve the code for the Runescape Skill Calculator I am working on. I am curious if I could have cut out some lines of code by using different functions. The Code provided is my project I am working on. Can you review it and give me pointers?
Your
switchstatement is unnecessary. Sinceis exactly the same code in all cases, you can move it out of the
switch(to right before it). Before those lines, add code which checks thatlvlis in the range from 2 to 100 and exits. Then you’ll see that all the cases remaining are of the formwhere
kis some integer. Create an array with 101 elements (so the indices go from 0 to 100) to hold all the possible values ofk, and initialize it:Then your huge
switchstatement turns into:You can use a similar technique of moving things into arrays to take your block of
coutlines listing each material and ore requirements and turn it into aforloop.One of the fundamental skills of programming is to recognize repetition and find a way to turn it into a loop or otherwise simplify it. What you’ve written is called “spaghetti code”, and a red flag is that there’s a lot of copying and pasting.
Whenever you find yourself copying and pasting code, you should think “this should be a loop or a function.” The parts that change from version to version are the parts that need to be function parameters or array lookups.