So I'm trying to enter all the information for this program and it's giving me a hard time. The ones with (need help) are the tough steps. The text file and functions are found in the attachments.

U-WATCH-UR-WEIGHT

"At the beginning and end of each month, members of the club are weighed in. Each member's first name, last name, initial weight and final weight are recorded on a line in the file weight.txt. This file contains the weights at the beginning and end of January. The file will not contain more than 30 records. Read into 4 arrays, each member's first name, last name, initial and final weights. A fifth array must be created to store the difference between the final and the initial weight for the month. If a member loses weight, this difference will be a positive number. If a member gains weight, this difference will be a positive number. If a member loses weight, he/she is awarded a month's membership fee. Create a sixth array that will store the word 'FREE' or 'DUE' depending on whether or not the member lost weight."

I already have step one: Open the file you need to read from.

Step two: Read in all the records and fill in the vectors (4 vectors will be read, 2 vectors will be calculated/created). Keep track of the # of records you have read in so you can resize your vectors after reading them all in. (desperate help needed)

Step 3: Print out a welcome message, with a brief explanation of the program(no problems here).

Step 4: Start a do while loop (loop executed unless user selects (5) Exit)
4a. Print out the menu
(1.)Sort by member's name
(2.)Sort by weight loss
(3.)Search for a member's last name (need help)
(4.)Calculate the average weight loss (need help)
(5.)Exit the program
4b. Ask the user to enter an option (no help needed)
4c. Use a switch statement to process option (no help needed)

  • Case 1: Use bubble sort to sort vectors alphabetically by last or first name (be sure to swap all 6 vectors). Call the Print Function (no help needed)
  • Case 2: Use a bubble sort to sort vectors numerically by weight loss (be sure to swap all six vectors) Call the Print Function (no help needed)
  • Case 3: As the user for a member (last name) to search for.
    Call a function (see last page) passing in the vector of names and the member to search for. The function will return an index value. )major help needed)
    - If the index value is -1, print out a message that the consumer was not found in the list.
    - If the index was not -1, it contains the location in the vector of the consumer, print out a letter to the member reminding him that his next month's fee is "FREE or "DUE". Include the member's name (first and last) and weight loss. (need help)
    Case 4:
  • Initialize the total weight loss to zero.
  • Loop through the vectors keeping track of the total weight loss for all members.
  • Calculate the average, rounded to the nearest tenth.
  • Print out a message with the average weight loss/gain.

Here's the code I have so far:

#include <cstdlib>
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>

using namespace std;

int SearchN(vector <string> &lastname, string searchName)
{
    bool found = false;
    int place = 0;

    while (found!=true&&place < lastname.size())
    {
       if (searchName == lastname[place])
          found = true;
       else
           place++;
    }

    if (found==true)
       return place;
    else
        return -1;
}

void printIt(vector <string> &firstname, vector <string> &lastname,
             vector <int> &oldweight, vector <int> &newweight,
             vector <int> &difference, vector <string> &membfee)

{
   cout<<setw(15)<<"firstname"<<setw(10)<<"lastname"<<setw(11)<<"oldweight"
   <<setw(11)<<"newweight"<<setw(11)<<"difference"<<setw(8)<<"membfee"<<endl;


   for (int i = 0; i < lastname.size(); i++)
   {
       cout<<setw(15)<<firstname[i]<<setw(10)<<lastname[i]<<setw(11)<<
       oldweight[i]<<setw(11)<<newweight[i]<<setw(11)<<difference[i]<<
       setw(8)<<membfee[i]<<endl;
   }
}
int main(int argc, char *argv[])
{
    int count=0;
    bool found=false;
    int place=0;
    char option;
    string searchName(30);           // searchName declared as string
    vector <string> membfee(30);
    vector <string> firstname(30);    // person's first name
    vector <string> lastname(30);     // person's last name
    vector <int> difference(30);      // difference of weight lost/gained
    vector <int> newweight(30);     // final weight after losing/gaining weight
    vector <int> oldweight(30);      // starting weight
    vector <int> totalweightloss(30);
    ifstream inweight;
    int tempnewweight;
    int tempoldweight;
    int tempdifference;
    string tempfirstname;
    string templastname;
    string tempmembfee;

    inweight.open("weight.txt");
    if (inweight.fail())
    {
       cout<<"Error opening the file!";
       system ("PAUSE");
       exit(1);
       cout<<endl;
    }
    else
    {

    cout<<"Welcome to the U-Watch-Ur-Weight Program! This program calculates"
    "how much weight a person gained or lost each month."<<endl;

    while(inweight>>firstname[count])
    {
        inweight>>lastname[count]>>oldweight[count]>>newweight[count];
        difference[count]=newweight[count]-oldweight[count];

        if (difference[count]<=0)
          {
             membfee[count]="FREE";
          }
          else
             membfee[count]="DUE";
             count++;

    }

    firstname.resize(count);
    lastname.resize(count);
    oldweight.resize(count);
    newweight.resize(count);
    difference.resize(count);
    membfee.resize(count);

do
{
    cout<<"You can: "<<endl;
    cout<<"\t1)Sort by member's last name"<<endl;
    cout<<"\t2)Sort by weight loss"<<endl;
    cout<<"\t3)Search for a member's last name"<<endl;
    cout<<"\t4)Calculate the average weight loss"<<endl;
    cout<<"\t5)Exit the program"<<endl;
    cout<<endl;
    cout<<"Choose an option: ";
    cin>>option;

    switch(option)
    {
    case 1:
         option = 1;

         for (int k = 1; k < lastname.size(); k++)
         {
             for (int j = 0; j < lastname.size()-k; j++)
             {
                 if (lastname[j] > lastname[j+1])
                 {
                    tempfirstname=firstname[j];
                    firstname[j]=firstname[j+1];
                    firstname[j+1]=tempfirstname;
                    templastname=lastname[j];
                    lastname[j]=lastname[j+1];
                    lastname[j+1]=templastname;
                    tempoldweight=oldweight[j];
                    oldweight[j]=oldweight[j+1];
                    oldweight[j+1]=tempoldweight;
                    tempnewweight=newweight[j];
                    newweight[j]=newweight[j+1];
                    newweight[j+1]=tempnewweight;
                    tempdifference=difference[j];
                    difference[j]=difference[j+1];
                    difference[j+1]=tempdifference;
                    tempmembfee=membfee[j];
                    membfee[j]=membfee[j+1];
                    membfee[j+1]=tempmembfee;
                 }
             }
         }
         printIt(firstname, lastname, oldweight, newweight, difference, membfee);
         break;

    case 2:
         option = 2;

         for (int k = 1; k < lastname.size(); k++)
         {
             for (int j = 0; j < lastname.size()-k; j++)
             {
                 if (difference[j] > difference[j+1])
                 {
                    tempfirstname=firstname[j];
                    firstname[j]=firstname[j+1];
                    firstname[j+1]=tempfirstname;
                    templastname=lastname[j];
                    lastname[j]=lastname[j+1];
                    lastname[j+1]=templastname;
                    tempoldweight=oldweight[j];
                    oldweight[j]=oldweight[j+1];
                    oldweight[j+1]=tempoldweight;
                    tempnewweight=newweight[j];
                    newweight[j]=newweight[j+1];
                    newweight[j+1]=tempnewweight;
                    tempdifference=difference[j];
                    difference[j]=difference[j+1];
                    difference[j+1]=tempdifference;
                    tempmembfee=membfee[j];
                    membfee[j]=membfee[j+1];
                    membfee[j+1]=tempmembfee;
                 }
             }
         }
         printIt(firstname, lastname, oldweight, newweight, difference,
         membfee);
         break;

    case 3:
         option = 3;
         int index;
         cout<<"Enter the person's last name: ";
         cin>>searchName;

         int searchN(lastname, searchName);



while (found!=true&&place < lastname.size())
    {
       if (searchName == lastname[place])
          found = true;
       else
           place++;
    }

         if (found == true&&difference>0)
         {
         cout<<"Dear "<<firstname<<" "<<lastname<<","<<endl;
         cout<<endl;
         cout<<"Last month your weight gain was "<<difference<<" pounds. We would"<<endl;
         cout<<"like to remind you that your next month's fee is "<<endl;
         cout<<membfee<<". Don't give up - we are here to help!"<<endl;
         cout<<endl;
         cout<<"Sincerely,"<<endl;
         cout<<"Ima Hottie"<<endl;
         cout<<"Director Julia"<<endl;
         }

         else if (found == true&&difference<=0)
         {
         cout<<"Dear "<<firstname<<" "<<lastname<<","<<endl.
         cout<<endl;
         cout<<"Last month your weight loss was "<<difference<<" pounds. We would"<<endl;
         cout<<"like to remind you that your next month's fee is"<<endl;
         cout<<membfee<<". Congratulations on your weight loss!"<<endl;
         cout<<endl;
         cout<<"Sincerely,"<<endl;
         cout<<"Ima Hottie"<<endl;
         cout<<"Director"<<endl;
         }

       else
         cout<<"Sorry, the name "<<searchName<<" was not found in our file."<<endl;
         break;


    case 4:
         cout<<setprecision(1);
         cout<<fixed;
         option = 4;
         totalweightloss=0;

 for (int i=1; i < difference; i++)  //careful declaring in loop
    {
    totalweightloss = totalweightloss + count;
    }
    totalweightloss = difference + count;

    cout<<"The average weight loss/gain is "<<totalweightloss<<endl;



         break;
    case 5:
         cout<<"Thank you for running the U-Watch-Ur-Weight Program! Please";
         "come again"<<endl;
         break;
    default 6:
         cout<<"Invalid option. Please re-enter a valid option."<<endl;
         break;
    }

} while (option != 5);

    cout<<setw(15)<<firstname<<setw(10)<<lastname<<setw(11)<<
       oldweight<<setw(11)<<newweight<<setw(11)<<difference<<
       setw(8)<<membfee<<endl;

    inweight.close();
    system("PAUSE");
    return EXIT_SUCCESS;
}

Thanks you so much for helping me with this!

Recommended Answers

All 3 Replies

If you are having trouble with step 2, you should not have any code for step 3 and beyond.

Edit out all the stuff you cannot test without step 2 being finished.
Then perfect step 2.
Add step 3 and make sure it works.
Then start adding step 4, a piece at a time.

The hardest way to write any program is to write the whole thing then start testing. You get lost fast.

Question: Do functions go before int main?

Functions can go before main() as you have it, or they can go after main() but in that case you'll need a prototype before main to tell the compiler what to expect later on.

In your example, for your method SearchN int SearchN(vector <string> &lastname, string searchName); or simply int SearchN(vector<string> &, string); would have to be placed before main().

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.