1. Overview

In this project, you will:

  • Practice basic C++ syntax including branching structures
  • Write classes and instantiate those classes using a constructor
  • Use arrays to hold objects
  • Use simple file input
  • Practice breaking projects into multiple files
  • Use a makefile to compile a project

2. Background

Laboratory is an experience where you are trying to either find or make the substances from a list. Some of the most basic substances (elements) must be found by searching for them. Others are made by introducing two elements to each other making a compound.

A chemical bond is a lasting attraction between atoms, ions or molecules that enables the formation of chemical compounds. The bond may result from the electrostatic force of attraction between oppositely charged ions as in ionic bonds or through the sharing of electrons as in covalent bonds. The strength of chemical bonds varies considerably; there are "strong bonds" or "primary bonds" such as covalent, ionic and metallic bonds, and "weak bonds" or "secondary bonds" such as dipole-dipole interactions, the London dispersion force and hydrogen bonding.

Each laboratory has a chemist, and each chemist is trying to complete their collection of all available substances. Some substances will require multiple steps of combining elements and compounds to make the final form. For example, if the chemist had found hydrogen and oxygen then they could be combined to make hydroxide (OH). Then barium could be combined with hydroxide to make barium hydroxide (Ba(OH)2.

You will be implementing the role of the chemist and the laboratory. For our purposes, the chemist can search for elements (such as carbon) or try to combine elements to make compounds. The goal is to make as many compounds as possible.

This game is loosely based on "Little Alchemy" which can be played here: https://littlealchemy.com/.

Item Data:

  • Element (Base element, these are just found by randomly searching)
  • Compound (crafted from elements, can't be found)
    • Some compounds require more than one compound

Here is an example from the proj2_data.txt file. This says, "to make Hyrdoxide, which is a compound with the chemical formula of OH, I will need Oxygen and Hydrogen".

Figure 1. Input File Details: see image.

Some compounds require multiples of an element or compound to create them. For example, here is the sequence to build Bicarbonate.

1. Find Carbon (element) and Oxygen (element) by searching for them.

2. Attempt to merge Carbon (C) and Oxygen (O) to make Carbonate (CO3). NOTE: Even though carbonate requires 3 oxygen, you only need to use one from inventory to make it.

3. Find Hydrogen (H) by searching for it.

4. Attempt to merge Carbonate (CO3) and Hydrogen (H) to make Bicarbonate (HCO3).

Scoring

Your chemist starts without having any quantity of any substances. As they find and make additional substances, they will approach 100%. They will complete the laboratory once they have at least one of each substance.

3. Assignment Description

Initially, you will need to read in a list of elements and compounds from a file and load them into an array of substances. The list of substances is static, and you can assume that the size can be stored in a constant (PROJ2_SIZE). A chemist does not start with a quantity of any substances, but you can begin searching for elements immediately. Anytime an element is found, it is added to the chemist's collection of substances. Once the chemist acquires at least 2 elements, they may begin crafting new substances. For example, Carbon and Oxygen makes Carbonate. All substances that can be acquired by searching are considered elements. Substances that are made up of multiple elements are called compounds.

4. Requirements:

This is a list of the requirements of this application. For this project, you will be provided with header files to start you in the right direction. For you to earn all the points, however, you will need to meet all the defined requirements.

  • The project must be completed in C++. You may not use any libraries or data structures that we have not learned in class. Libraries we have learned include < iostream >, < fstream >, < iomanip >, < cmath >, < ctime >, < cstdlib >, and < string >. You may not use vectors - everything must be implemented in arrays. You should only use namespace std.
  • Using the provided files, Substances.h, Chemist.h, Lab.h, makefile, proj2_data.txt and proj2.cpp, create Laboratory.
  • You must use the provided header files (Substances.h, Chemist.h and Lab.h). Do not add or change any variables or functions or constants in these files. Do not add member variables to any class.
  • All user input must be validated. For example, if a menu allows for 1, 2, or 3 to be entered and the user enters a 4, it will re-prompt the user. However, the user is expected to always enter the correct data type. i.e. If the user is asked to enter an integer, they will. If they are asked to enter a character, they will. You do not need to worry about checking for correct data types.
  • There is a single input file for this project named, "proj2_data.txt". The file name can be stored as a constant. The file is with the other starting files.
  • For this project, pointers are not to be used, however, pass-by- reference is required.
  • The player's name can have a space (use getline). Additionally, the names of the substances may have a space.
  • There are two types of substances:
    • Elements that can be randomly found by searching. You can have unlimited of each element.
    • Compounds can be created by merging two raw elements or two compounds. You can have unlimited of each compound.
  • Have a main menu that asks if the user wants to:
    • Display the chemist's current substances and their current quantities in a numbered list.
    • Search for Elements - Randomly finds one of the elements from the list of substances. The substance must have the type of "element" and should not have any additional requirements. Increases the quantity in the chemist's inventory.
    • Merge Substances
      • Asks which substances you would like to combine. Checks a few things:
        • Validates that the numbers entered are within the range of available substances.
        • Checks to see if there is a compound with those two substances.
        • Checks to see if there is enough quantity to merge those two substances. Note: Merging always only uses one unit of any substance. For example, carbon and oxygen makes carbonate (CO3) but you do not need three oxygen to make the carbonate - you only need one.
        • All substances can be merged an unlimited number of times as long as the chemist has an adequate supply.
      • A recipe for any item can be made up of two substances in any order.
      • RequestSubstance() inside of the Lab class is simply the function that asks the user which substance they would like to merge. It does something specific if the user enters a -1 (which should display all substances) and it validates to make sure they enter a valid choice. The player needs to have at least 1 quantity of that substance in order to use it in a combination.
    • Display Score - Displays the percentage of total substances with quantities.
    • Exit - The chemist is finished once they have at least one of each substance in their possession and it will automatically exit once that criteria is met.

5. Recommendations

You must use the provided header files (Substance.h, Chemist.h, and Lab.h) additionally, we provided you with the makefile and the proj2.cpp.

Here are some general implementation recommendations (do not follow these verbatim - these are GENERAL suggestions):

  • Read each of the header files in detail. Use paper to take notes. Each header file has tons of comments.
  • Design the solution (part is already designed, so make sure you understand how it works) on PAPER.
  • Start with the Chemist.cpp file and code everything. The Chemist class should not have any cout statements. Don't forget the constructor! Test everything incrementally.
  • Once Chemist.cpp is written, start on Game.cpp - start with loading in the substances from the proj2_data.txt file. This will be tricky because you have substance names with spaces and a comma delimited data file. Check out the delimiter feature in getline here: https://www.geeksforgeeks.org/getline-string-c/
  • When you load the substances from the file, you can change the quantity of just the substances for purposes of testing the merges. You can even just give the elements a quantity.
  • CombineSubstances()is the most difficult function to write so expect to spend some time finishing it.
  • After the files are successfully loaded (and displayed) work on the main menu.

6. Sample Input and Output

For this project, the input file is very simple. The only input file is called proj2_data.txt. You can code the file name as a constant.

The columns for proj2_data.txt are as follows: substance name, substance type (element or compound), the substance formula, first substance required to make, and second substance required to make.

Elements have no first and second substances to make. They can only be found by searching.

Compounds are made by combining two elements or compounds. When combining substances, only one unit of that substance is consumed.

For example, carbonate is made of carbon and oxygen so when you combine carbon and oxygen, you decrease carbon by one and oxygen by one (even though it should be three units of oxygen) and increase carbonate by one. This was done to make it less complicated.

Here is part of the input file.

Selenium,element,Se,Se,
Tin,element,Sn,Sn,
Zinc,element,Zn,Zn,
Hydroxide,compound,OH,O,H
Acetate,compound,C2H3O2,C,OH
Carbonate,compound,CO3,C,O

In the sample output below, user input is colored blue for clarity. After compiling and running proj2, the output would look like this:

[me@linux2 proj2]$ make run
./proj2
283 substances loaded.
What is the name of your Chemist?
JD
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit

If you were to display the chemist's substance, it would look like this:

What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
1
My chemist has 29 different substances in inventory
currently
1. Silver (Ag) 0
2. Barium (Ba) 0
3. Beryllium (Be) 0
****OMITTED FOR CLARITY*****
280. Zinc Phosphate (Zn3(PO4)2) 0
281. Zinc Selenide (ZnSe) 0
282. Zinc Sulfate (ZnSO4) 0
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit

If the user would choose 2, Search for Elements, then the output would look like this:

What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
2
Nickel Found!
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
2
Manganese Found!
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
2
Potassium Found!

If the user would choose 3, Attempt To Merge Substances, then choose something that we have in inventory:

What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
3
Which substances would you like to merge?
To list known substances enter -1
23
Which substances would you like to merge?
To list known substances enter -1
3
O combined with Be to make Beryllium Oxide!
Your chemist has built Beryllium Oxide.
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
3
Which substances would you like to merge?
To list known substances enter -1
1
Which substances would you like to merge?
To list known substances enter -1
2
Nothing happened when you tried to combine Ag and Ba
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit

Here we create Beryllium Oxide from Beryllium and Oxygen. The quantities for both Beryllium and Oxygen would be reduced by one and the quantity for Beryllium Oxide would increase by one.

Then we try to combine Silver and Barium but there is no compound that requires just those two elements.

What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
3
Which substances would you like to merge?
To list known substances enter -1
7
Which substances would you like to merge?
To list known substances enter -1
23
Cl combined with O to make Chlorate!
Your chemist has built Chlorate.
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
3
Which substances would you like to merge?
To list known substances enter -1
29
Which substances would you like to merge?
To list known substances enter -1
35
Zn combined with ClO3 to make Zinc Chlorate!
Your chemist has built Zinc Chlorate.
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit

Here is an example where of the See Score is selected. Once 100% of all substances have a quantity of greater or equal to 1, the chemist is finished and the lab ends.

What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
4
***The Chemist***
The Great Chemist JD
There are 283 substances available to find
You have found 30 so far.
This is 10.6007%
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit

Here are some example runs where additional input validation is being shown and where the name of the Chemist has a space:

hat is the name of your Chemist?
Volodymyr Zelenskyy
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit
4
***The Chemist***
The Great Chemist Volodymyr Zelenskyy
There are 283 substances available to find
You have found 29 so far.
This is 10.2473%
What would you like to do?
1. Display your Chemist's Substances
2. Search for Elements
3. Attempt to Merge Substances
4. See Score
5. Quit

There is a longer run of the game available as proj2_sample1.txt with the other files.

Starter Codes

Substances.h

#ifndef SUBSTANCE_H //Include/Header Guard
#define SUBSTANCE_H //Include/Header Guard

#include
#include
#include < cstdlib >

using namespace std;

// Name: Substance struct
// Desc - Used to store data about substances
// Type is either element or compound
// Formula is the full formula of the substance. Elements have exactly one entry in the substance.
// A compound is made by combining substance1 and substance2
struct Substance
{
Substance() {} //Default constructor - can leave empty
Substance(string name, string type, string formula, string substance1, string substance2,
int quantity)
{
m_name = name; //Name of this substance
m_type = type; //Type of the substance (element or compound)
m_formula = formula; //Full formula of the substance
m_substance1 = substance1; //Name of first required substance to create
m_substance2 = substance2; //Name of second required substance to create
m_quantity = quantity; //Number of the substance
}

string m_name; //Name of the substance
string m_type; //Type of the substance (element or compound)
string m_formula; //Full formula of the substance
string m_substance1; //Required substance 1 to create
string m_substance2; //Required substance 2 to create
int m_quantity = 0; //Quantity of substance owned
};

#endif

Chemist.h

#ifndef CHEMIST_H //Include/Header Guard
#define CHEMIST_H //Include/Header Guard

#include "Substance.h" //Include for the material struct
#include < iostream >
#include < string >
#include < cstdlib >
#include < iomanip >
using namespace std;

//Constants
const int PROJ2_SIZE = 283;

// class - do not add any functions to project 2
class Chemist
{
public:
// Name: Chemist() - Default Constructor
// Desc: Used to build a new Chemist
// Preconditions - Requires default values
// Postconditions - Creates a new Chemist (with a default name of "Beaker" and
// m_numSubstances = 0
Chemist();

// Name: Chemist(name) - Overloaded constructor
// Desc - Used to build a new Chemist
// Preconditions - Requires name
// Postconditions - Creates a new Chemist (with passed name and m_numSubstance = 0)
Chemist(string name);

// Name: GetName()
// Desc - Getter for Chemist name
// Preconditions - Chemist exists
// Postconditions - Returns the name of the Chemist
string GetName();

// Name: SetName(string)
// Desc - Allows the user to change the name of the Chemist
// Preconditions - Chemist exists
// Postconditions - Sets name of Chemist
// May not be used in the project explicitly but please impelement
void SetName(string name);

// Name: CheckSubstance(Substance)
// Desc - Checks to see if the Chemist has a substance if so, returns
// the index where it exists, if not returns -1
// Preconditions - Chemist already has substance
// Postconditions - Returns index of substance if Chemist has it else -1
int CheckSubstance(Substance);

// Name: AddSubstance(string)
// Desc - Inserts a material into the Chemist's list of substances. Has
// to see if it exists in m_mySubstances first to find location.
// Then adds substance and increments m_numSubstances
// Preconditions - Chemist exists
// Postconditions - Add a substances to the Chemist's m_mySubstances with a quantity of 0
void AddSubstance(Substance);

// Name: IncrementQuantity(Substance)
// Desc - Adds quantity to list of substances the chemist knows.
// Has to find location in array first. Then increments quantity
// Preconditions - Chemist exists
// Postconditions - Increases quantity of material for chemist
void IncrementQuantity(Substance);

// Name: DecrementQuantity(Substance)
// Desc - Reduces quantity from chemist's inventory with true, if no quantity false
// Preconditions - Chemist exists
// Postconditions - Reduces quantity of substance for chemist
bool DecrementQuantity(Substance);

// Name: CheckQuantity(Substance)
// Desc - Checks to see if quantity of two merge substances is greater than one.
// if the quantity of substance 1 is greater than one and the
// quantity of substance two is greater than one, returns true else false
// Preconditions - Chemist exists with substances
// Postconditions - Returns true if both are available
bool CheckQuantity(Substance, Substance);

// Name: GetSubstance(int)
// Desc - Returns a substance at at specific index
// Preconditions - Chemist already has substances
// Postconditions - Returns substance at specific index
Substance GetSubstance(int);

// Name: GetTotalSubstances
// Desc - Iterates over m_mySubstances and counts each substance with a quantity higher than 0
// Preconditions - Chemist may have no substances
// Postconditions - Returns number of substances with a quantity greater than 0
int GetTotalSubstances();

// Name: DisplaySubstances()
// Desc - Displays a numbered list of all substances known by the Chemist
// Preconditions - Chemist exists
// Postconditions - Displays all substances
void DisplaySubstances();

private:
string m_myName; //Name of Chemist
Substance m_mySubstances[PROJ2_SIZE] = {}; //List of substances known to this chemist
int m_numSubstances; //Total number of substances
};

#endif //Exit Header Guard

Lab.h

#ifndef GAME_H //Header Guard
#define GAME_H //Header Guard

#include < fstream >
#include "Substance.h"
#include "Chemist.h"

//Constants (additional constants allowed)
const string PROJ2_DATA = "proj2_data.txt"; //File constant
const int START_ELEMENTS = 100; //For testing
//No additional functions allowed

class Lab
{
public:
// Name: Lab() Default Constructor
// Desc - Instantiates an object of type Lab
// Preconditions - None
// Postconditions - None
Lab(); //Default Constructor

// Name: LoadSubstances
// Desc - Loads each substance into m_substances from file
// The loads all substances from m_substances into m_myChemist's substance array
// Preconditions - Requires file with valid substance data
// Postconditions - m_substance is populated with substance structs
void LoadSubstances();

// Name: StartLab()
// 1. Displays Lab Title (as implemented below)
// 2. Loads all substances and their recipes into m_substances (Load Substances)
// 3. Asks user for their chemist's name (store in m_myChemist as m_myName)
// 4. Copies all substances from m_substances into the chemist's substance array
// 5. Manages the game itself including win conditions continually calling the main menu
// Preconditions - None
// Postconditions - m_substances and m_myChemist's substances populated
void StartLab();

// Name: DisplayMySubstances()
// Desc - Iterates over m_myChemist's substances
// Preconditions - Player's chemist has substances
// Postconditions - Displays a numbered list of substances
void DisplaySubstances();

// Name: MainMenu()
// Desc - Displays and manages menu
// Preconditions - Player has an Chemist
// Postconditions - Returns number including exit
int MainMenu();

// Name: SearchSubstances()
// Desc - Attempts to search for raw substances (must be type "element")
// Preconditions - Raw substances loaded
// Postconditions - Increases quantity in Chemist's posession of substances
void SearchSubstances();

// Name: CombineSubstances()
// Desc - Attempts to combine known substances. If combined, quantity of substance decreased
// 1. Requests user to choose two substances (RequestSubstance)
// 2. Checks to see if formula exists for combining two chosen substances
// (checks sub1, sub2 and sub2, sub1) using SearchFormula
// 3. If there is an available formula for two chosen substances, checks
// quantity for two chosen substance.
// If no quantity for two substances, tells user that there is no available quantity
// If quantity is available, decreases quantity for two chosen substances
// from the chemist then increases new substance
// 4. If there is no available formula, tells user that nothing happens when you try and merge two chosen substances
// Preconditions - Chemist is populated with substances
// Postconditions - Increments quantity of substance "made", decreases quantity of source items
void CombineSubstances();

// Name: RequestSubstance()
// Desc - Allows the user to choose a substance to try and merge.
// Returns the index of chosen substance
// Preconditions - Chemist has substances to try and merge
// Postconditions - Returns integer of substance selected by user
void RequestSubstance(int& choice);

// Name: SearchFormula()
// Desc - Searches formulas for two strings (name of item)
// Preconditions - m_substances is populated
// Postconditions - Returns int index of matching formula
int SearchFormulas(string, string);

// Name: CalcScore()
// Desc - Displays current score for Chemist
// Preconditions - Chemist is populated with substances
// Postconditions - Displays total number of substances found. Displays
// percentange found as number found divided by total available
void CalcScore();

// Name: LabTitle()
// Desc - Title for Lab (Do not edit)
// Preconditions - None
// Postconditions - None
void LabTitle()
{
cout << "*******************************************************************" << endl;
cout << "LL AAA BBB OOOO RRR AAA TTTTT OOOO RRR YY YY " << endl;
cout << "LL A A B B O O R R A A T O O R R Y Y " << endl;
cout << "LL AAAAA B B O O R R AAAAA T O O R R YY " << endl;
cout << "LL A A BBBB O O RRR A A T O O RRR YY " << endl;
cout << "LL A A B B O O R R A A T O O R R YY " << endl;
cout << "LLLLL A A B B O O R R A A T O O R R YY " << endl;
cout << "LLLLL A A BBB OOOO R R A A T OOOO R R YY " << endl;
cout << "*******************************************************************" << endl;
}

private:
Chemist m_myChemist; //Player's Chemist for the game
Substance m_substances[PROJ2_SIZE]; //All substances in the game (loaded from file)
};

#endif //Exit Header Guard

proj2_data.txt

Silver,element,Ag,Ag,
Barium,element,Ba,Ba,
Beryllium,element,Be,Be,
Bromine,element,Br,Br,
Carbon,element,C,C,
Calcium,element,Ca,Ca,
Chlorine,element,Cl,Cl,
Cobalt,element,Co,Co,
Chromium,element,Cr,Cr,
Cesium,element,Cs,Cs,
Copper,element,Cu,Cu,
Fluorine,element,F,F,
Iron,element,Fe,Fe,
Hydrogen,element,H,H,
Iodine,element,I,I,
Potassium,element,K,K,
Lithium,element,Li,Li,
Magnesium,element,Mg,Mg,
Manganese,element,Mn,Mn,
Nitrogen,element,N,N,
Sodium,element,Na,Na,
Nickel,element,Ni,Ni,
Oxygen,element,O,O,
Phosphorus,element,P,P,
Lead,element,Pb,Pb,
Sulfur,element,S,S,
Selenium,element,Se,Se,
Tin,element,Sn,Sn,
Zinc,element,Zn,Zn,
Hydroxide,compound,OH,O,H
Acetate,compound,C2H3O2,C,OH
Carbonate,compound,CO3,C,O
Bicarbonate,compound,HCO3,H,CO3
Nitrate,compound,NO3,N,O
Chlorate,compound,ClO3,Cl,O
Permanganate,compound,MnO4,Mn,O
Chromate,compound,CrO4,Cr,O
Ammonium,compound,NH4,N,H
Sulfate,compound,SO4,S,O
Phosphate,compound,PO4,P,O
Ammonium Acetate,compound,NH4C2H3O2,NH4,C2H3O2
Ammonium Chlorate,compound,NH4ClO3,NH4,ClO3
Ammonium Hydrogen Carbonate,compound,NH4HCO3,NH4,HCO3
Ammonium Hydroxide,compound,NH4OH,NH4,OH
Ammonium Oxide,compound,(NH4)2O,NH4,O
Ammonium Permanganate,compound,NH4MnO4,NH4,MnO4
Ammonium Selenide,compound,(NH4)2Se,NH4,Se
Ammonium Sulfide,compound,(NH4)2S,NH4,S
Barium Acetate,compound,Ba(C2H3O2)2,Ba,C2H3O2
Barium Bromide,compound,BaBr2,Ba,Br
Barium Carbonate,compound,BaCO3,Ba,CO3
Barium Chlorate,compound,Ba(ClO3)2,Ba,ClO3
Barium Chloride,compound,BaCl2,Ba,Cl
Barium Chromate,compound,BaCrO4,Ba,CrO4
Barium Fluoride,compound,BaF2,Ba,F
Barium Hydrogen Carbonate,compound,Ba(HCO3)2,Ba,HCO3
Barium Hydroxide,compound,Ba(OH)2,Ba,OH
Barium Iodide,compound,BaI2,Ba,I
Barium Nitrate,compound,Ba(NO3)2,Ba,NO3
Barium Oxide,compound,BaO,Ba,O
Barium Permanganate,compound,Ba(MnO4)2,Ba,MnO4
Barium Phosphate,compound,Ba3(PO4)2,Ba,PO4
Barium Selenide,compound,BaSe,Ba,Se
Barium Sulfate,compound,BaSO4,Ba,SO4
Barium Sulfide,compound,BaS,Ba,S
Beryllium Acetate,compound,Be(C2H3O2)2,Be,C2H3O2
Beryllium Bromide,compound,BeBr2,Be,Br
Beryllium Carbonate,compound,BeCO3,Be,CO3
Beryllium Chlorate,compound,Be(ClO3)2,Be,ClO3
Beryllium Chloride,compound,BeCl2,Be,Cl
Beryllium Chromate,compound,BeCrO4,Be,CrO4
Beryllium Fluoride,compound,BeF2,Be,F
Beryllium Hydrogen Carbonate,compound,Be(HCO3)2,Be,HCO3
Beryllium Hydroxide,compound,Be(OH)2,Be,OH
Beryllium Iodide,compound,BeI2,Be,I
Beryllium Nitrate,compound,Be(NO3)2,Be,NO3
Beryllium Oxide,compound,BeO,Be,O
Beryllium Permanganate,compound,Be(MnO4)2,Be,MnO4
Beryllium Phosphate,compound,Be3(PO4)2,Be,PO4
Beryllium Selenide,compound,BeSe,Be,Se
Beryllium Sulfate,compound,BeSO4,Be,SO4
Beryllium Sulfide,compound,BeS,Be,S
Calcium Acetate,compound,Ca(C2H3O2)2,Ca,C2H3O2
Calcium Bromide,compound,CaBr2,Ca,Br
Calcium Carbonate,compound,CaCO3,Ca,CO3
Calcium Chlorate,compound,Ca(ClO3)2,Ca,ClO3
Calcium Chloride,compound,CaCl2,Ca,Cl
Calcium Chromate,compound,CaCrO4,Ca,CrO4
Calcium Fluoride,compound,CaF2,Ca,F
Calcium Hydrogen Carbonate,compound,Ca(HCO3)2,Ca,HCO3
Calcium Hydroxide,compound,Ca(OH)2,Ca,OH
Calcium Iodide,compound,CaI2,Ca,I
Calcium Nitrate,compound,Ca(NO3)2,Ca,NO3
Calcium Oxide,compound,CaO,Ca,O
Calcium Permanganate,compound,Ca(MnO4)2,Ca,MnO4
Calcium Phosphate,compound,Ca3(PO4)2,Ca,PO4
Calcium Selenide,compound,CaSe,Ca,Se
Calcium Sulfate,compound,CaSO4,Ca,SO4
Calcium Sulfide,compound,CaS,Ca,S
Cesium Acetate,compound,CsC2H3O2,CsC2H3O2,C2H3O2
Cesium Bromide,compound,CsBr,Cs,Br
Cesium Chlorate,compound,CsClO3,CsClO3,ClO3
Cesium Chloride,compound,CsCl,Cs,Cl
Cesium Fluoride,compound,CsF,Cs,F
Cesium Hydrogen Carbonate,compound,CsHCO3,CsHCO3,HCO3
Cesium Hydroxide,compound,CsOH,CsOH,OH
Cesium Iodide,compound,CsI,Cs,I
Cesium Nitrate,compound,CsNO3,CsNO3,NO3
Cesium Nitride,compound,Cs3N,Cs,N
Cesium Oxide,compound,Cs2O,Cs,O
Cesium Permanganate,compound,CsMnO4,CsMnO4,MnO4
Cesium Phosphide,compound,Cs3P,Cs,P
Cesium Selenide,compound,Cs2Se,Cs,Se
Cesium Sulfide,compound,Cs2S,Cs,S
Cobalt(II) Bromide,compound,CoBr2,Co,Br
Cobalt(II) Chloride,compound,CoCl2,Co,Cl
Cobalt(II) Fluoride,compound,CoF2,Co,F
Cobalt(II) Iodide,compound,CoI2,Co,I
Cobalt(II) Oxide,compound,CoO,Co,O
Cobalt(II) Selenide,compound,CoSe,Co,Se
Cobalt(II) Sulfide,compound,CoS,Co,S
Cobalt(III) Bromide,compound,CoBr3,Co,Br
Cobalt(III) Chloride,compound,CoCl3,Co,Cl
Cobalt(III) Fluoride,compound,CoF3,Co,F
Cobalt(III) Iodide,compound,CoI3,Co,I
Copper(I) Bromide,compound,CuBr,Cu,Br
Copper(I) Chloride,compound,CuCl,Cu,Cl
Copper(I) Fluoride,compound,CuF,Cu,F
Copper(I) Iodide,compound,CuI,Cu,I
Copper(II) Bromide,compound,CuBr2,Cu,Br
Copper(II) Chloride,compound,CuCl2,Cu,Cl
Copper(II) Fluoride,compound,CuF2,Cu,F
Copper(II) Iodide,compound,CuI2,Cu,I
Copper(II) Oxide,compound,CuO,Cu,O
Copper(II) Selenide,compound,CuSe,Cu,Se
Copper(II) Sulfide,compound,CuS,Cu,S
Hydrogen Acetate,compound,HC2H3O2,H,C2H3O2
Iron(II) Acetate,compound,Fe(C2H3O2)2,Fe,C2H3O2
Iron(II) Bromide,compound,FeBr2,Fe,Br
Iron(II) Carbonate,compound,FeCO3,Fe,CO3
Iron(II) Chlorate,compound,Fe(ClO3)2,Fe,ClO3
Iron(II) Chloride,compound,FeCl2,Fe,Cl
Iron(II) Chromate,compound,FeCrO4,Fe,CrO4
Iron(II) Fluoride,compound,FeF2,Fe,F
Iron(II) Hydrogen Carbonate,compound,Fe(HCO3)2,Fe,HCO3
Iron(II) Hydroxide,compound,Fe(OH)2,Fe,OH
Iron(II) Iodide,compound,FeI2,Fe,I
Iron(II) Nitrate,compound,Fe(NO3)2,Fe,NO3
Iron(II) Oxide,compound,FeO,Fe,O
Iron(II) Permanganate,compound,Fe(MnO4)2,Fe,MnO4
Iron(II) Phosphate,compound,Fe3(PO4)2,Fe,PO4
Iron(II) Selenide,compound,FeSe,Fe,Se
Iron(II) Sulfate,compound,FeSO4,Fe,SO4
Iron(II) Sulfide,compound,FeS,Fe,S
Iron(III) Bromide,compound,FeBr3,Fe,Br
Iron(III) Chloride,compound,FeCl3,Fe,Cl
Iron(III) Fluoride,compound,FeF3,Fe,F
Iron(III) Iodide,compound,FeI3,Fe,I
Lead(II) Bromide,compound,PbBr2,Pb,Br
Lead(II) Chloride,compound,PbCl2,Pb,Cl
Lead(II) Fluoride,compound,PbF2,Pb,F
Lead(II) Iodide,compound,PbI2,Pb,I
Lead(II) Oxide,compound,PbO,Pb,O
Lead(II) Selenide,compound,PbSe,Pb,Se
Lead(II) Sulfide,compound,PbS,Pb,S
Lead(IV) Bromide,compound,PbBr4,Pb,Br
Lead(IV) Chloride,compound,PbCl4,Pb,Cl
Lead(IV) Fluoride,compound,PbF4,Pb,F
Lead(IV) Iodide,compound,PBI4,PB,I
Lithium Acetate,compound,LiC2H302,Li,C2H3O2
Lithium Bromide,compound,LiBr,Li,Br
Lithium Chlorate,compound,LiClO3,Li,ClO3
Lithium Chloride,compound,LiCl,Li,Cl
Lithium Fluoride,compound,LiF,Li,F
Lithium Hydrogen Carbonate,compound,LiHCO3,Li,HCO3
Lithium Hydroxide,compound,LiOH,Li,OH
Lithium Iodide,compound,LiI,Li,I
Lithium Nitrate,compound,LiNO3,Li,NO3
Lithium Nitride,compound,Li3N,Li,N
Lithium Oxide,compound,Li2O,Li,O
Lithium Permanganate,compound,LiMnO4,Li,MnO4
Lithium Phosphide,compound,Li3P,Li,P
Lithium Selenide,compound,Li2Se,Li,Se
Lithium Sulfide,compound,Li2S,Li,S
Magnesium Acetate,compound,Mg(C2H3O2)2,Mg,C2H3O2
Magnesium Bromide,compound,MgBr2,Mg,Br
Magnesium Carbonate,compound,MgCO3,Mg,CO3
Magnesium Chlorate,compound,Mg(ClO3)2,Mg,ClO3
Magnesium Chloride,compound,MgCl2,Mg,Cl
Magnesium Chromate,compound,MgCrO4,Mg,CrO4
Magnesium Fluoride,compound,MgF2,Mg,F
Magnesium Hydrogen Carbonate,compound,Mg(HCO3)2,Mg,HCO3
Magnesium Hydroxide,compound,Mg(OH)2,Mg,OH
Magnesium Iodide,compound,MgI2,Mg,I
Magnesium Nitrate,compound,Mg(NO3)2,Mg,NO3
Magnesium Oxide,compound,MgO,Mg,O
Magnesium Permanganate,compound,Mg(MnO4)2,Mg,MnO4
Magnesium Phosphate,compound,Mg3(PO4)2,Mg,PO4
Magnesium Selenide,compound,MgSe,Mg,Se
Magnesium Sulfate,compound,MgSO4,Mg,SO4
Magnesium Sulfide,compound,MgS,Mg,S
Nickel(II) Bromide,compound,NiBr2,Ni,Br
Nickel(II) Chloride,compound,NiCl2,Ni,Cl
Nickel(II) Fluoride,compound,NiF2,Ni,F
Nickel(II) Iodide,compound,NiI2,Ni,I
Nickel(II) Oxide,compound,NiO,Ni,O
Nickel(II) Selenide,compound,NiSe,Ni,Se
Nickel(II) Sulfide,compound,NIS,NI,S
Nickel(III) Bromide,compound,NiBr3,Ni,Br
Nickel(III) Chloride,compound,NiCl3,Ni,Cl
Nickel(III) Fluoride,compound,NiF3,Ni,F
Nickel(III) Iodide,compound,NiI3,Ni,I
Potassium Acetate,compound,KC2H3O2,K,C2H3O2
Potassium Bromide,compound,KBr,K,Br
Potassium Chlorate,compound,KClO3,K,ClO3
Potassium Chloride,compound,KCl,K,Cl
Potassium Fluoride,compound,KF,K,F
Potassium Hydrogen Carbonate,compound,KHCO3,K,HCO3
Potassium Hydroxide,compound,KOH,K,OH
Potassium Iodide,compound,KI,K,I
Potassium Nitrate,compound,KNO3,K,NO3
Potassium Nitride,compound,K3N,K,N
Potassium Oxide,compound,K2O,K,O
Potassium Permanganate,compound,KMnO4,K,MnO4
Potassium Selenide,compound,K2Se,K,Se
Potassium Sulfide,compound,K2S,K,S
Potassoum Phosphide,compound,K3P,K,P
Silver Acetate,compound,AgC2H3O2,Ag,C2H3O2
Silver Bromide,compound,AgBr,Ag,Br
Silver Chlorate,compound,AgClO3,Ag,ClO3
Silver Chloride,compound,AgCl,Ag,Cl
Silver Fluoride,compound,AgF,Ag,F
Silver Hydrogen Carbonate,compound,AgHCO3,Ag,HCO3
Silver Hydroxide,compound,AgOH,Ag,OH
Silver Iodide,compound,AgI,Ag,I
Silver Nitrate,compound,AgNO3,Ag,NO3
Silver Oxide,compound,Ag2O,Ag,O
Silver Permanganate,compound,AgMnO4,Ag,MnO4
Silver Selenide,compound,Ag2Se,Ag,Se
Silver Sulfide,compound,Ag2S,Ag,S
Sodium Acetate,compound,NaC2H3O2,Na,C2H3O2
Sodium Bromide,compound,NaBr,Na,Br
Sodium Chlorate,compound,NaClO3,Na,ClO3
Sodium Chloride,compound,NaCl,Na,Cl
Sodium Fluoride,compound,NaF,Na,F
Sodium Hydrogen Carbonate,compound,NaHCO3,Na,HCO3
Sodium Hydroxide,compound,NaOH,Na,OH
Sodium Iodide,compound,NaI,Na,I
Sodium Nitrate,compound,NaNO3,Na,NO3
Sodium Nitride,compound,Na3N,Na,N
Sodium Oxide,compound,Na2S,Na,S
Sodium Permanganate,compound,NaMnO4,Na,MnO4
Sodium Phosphide,compound,Na3P,Na,P
Sodium Selenide,compound,Na2Se,Na,Se
Sodium Sulfide,compound,Na2S,Na,S
Tin(II) Bromide,compound,SnBr2,Sn,Br
Tin(II) Chloride,compound,SnCl2,Sn,Cl
Tin(II) Fluoride,compound,SnF2,Sn,F
Tin(II) Iodide,compound,SnI2,Sn,I
Tin(II) Oxide,compound,SnO,Sn,O
Tin(II) Selenide,compound,SnSe,Sn,Se
Tin(II) Sulfide,compound,SnS,Sn,S
Tin(IV) Bromide,compound,SnBr4,Sn,Br
Tin(IV) Chloride,compound,SnCl4,Sn,Cl
Tin(IV) Fluoride,compound,SnF4,Sn,F
Tin(IV) Iodide,compound,SnI4,Sn,I
Zinc Acetate,compound,Zn(C2H3O2)2,Zn,C2H3O2
Zinc Bromide,compound,ZnBr2,Zn,Br
Zinc Carbonate,compound,ZnCO3,Zn,CO3
Zinc Chlorate,compound,Zn(ClO3)2,Zn,ClO3
Zinc Chloride,compound,ZnCl2,Zn,Cl
Zinc Chromate,compound,ZnCrO4,Zn,CrO4
Zinc Fluoride,compound,ZnF2,Zn,F
Zinc Hydrogen Carbonate,compound,Zn(HCO3)2,Zn,HCO3
Zinc Hydroxide,compound,Zn(OH)2,Zn,OH
Zinc Iodide,compound,ZnI2,Zn,I
Zinc Nitrate,compound,Zn(NO3)2,Zn,NO3
Zinc Oxide,compound,ZnO,Zn,O
Zinc Permanganate,compound,Zn(MnO4)2,Zn,MnO4
Zinc Phosphate,compound,Zn3(PO4)2,Zn,PO4
Zinc Selenide,compound,ZnSe,Zn,Se
Zinc Sulfate,compound,ZnSO4,Zn,SO4
Zinc Sulfide,compound,ZnS,Zn,S

proj2.cpp

// Description: This is main for project 2

#include "Lab.h"

#include < iostream >
#include < cstdlib >
#include < string >
#include < ctime >
using namespace std;

int main()
{
srand((unsigned) time(NULL));
Lab newLab;
newLab.StartLab();
return 0;
}
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.