Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

//How Can I make this so it ranks both the girl and boy names? I enter \"Jamie\"

ID: 3536742 • Letter: #

Question


//How Can I make this so it ranks both the girl and boy names? I enter "Jamie" and it only gives me the girl rank, but not the male rank.


#include <iostream>

#include <string>

#include <fstream>

#include <cstdlib>


using namespace std;


void find_name(string);


int main ()

{

string name;

  

cout << "Enter a baby name to see how popular it is: ";

cin >> name;

  

find_name (name);

return 0;

}



void find_name (string name)

{

int rank;

string male, female;

ifstream fin;

bool male_rank = false, female_rank = false;

  

  

fin.open ("/Users/carolynmeyers/Desktop/C++/ch. 6 project 17/ch. 6 project 17/babynames2004.txt");

  

if (fin.fail() && male_rank == false && female_rank == false)

{

cout << "The file can not be opened. ";

exit(1);

}

  

  

while (!fin.eof() && male_rank == false && female_rank == false)

  

{

fin>>rank>>male>>female;

if (name == male)

male_rank=true;

else if (name == female)

female_rank=true;

}

  

if(male_rank == true && female_rank != true)

{

cout << " "<<name << " is ranked " << rank << " in popularity among boys. ";

cout << " "<<name << " is not ranked among the top 1000 girl names. ";

}

else if (!male_rank== true && female_rank == true)

{

cout << " "<<name << " is not ranked among the top 1000 boys names. ";

cout <<" "<< name << " is ranked " << rank << " in popularity among girls. ";

}

else if (male_rank == true && female_rank == true)

{

cout <<" "<< name << " is ranked " << rank << " in popularity among boys. ";

cout <<" "<< name << " is ranked " << rank << " in popularity among girls. ";

}

else if (male_rank != true && female_rank != true)

{

cout << " "<<name << " is not ranked among the top 1000 boys names. ";

cout <<" "<< name << " is not ranked among the top 1000 girl names. ";

}

  

fin.close( );

}

Explanation / Answer

there was some logical errer in the program I have corrected it and it worked

the changes I have made

1 while (!fin.eof() && male_rank == false && female_rank == false)

changed to [while (!fin.eof() && male_rank == false || female_rank == false)}

because the loop should run further even one of the male_rank or female_rank is true.

2if (name == male)

male_rank=true;

else if (name == female)

female_rank=true;

changed to if (name == male)

{male_rank=true;

brank = rank;

}

if (name == female)

{female_rank=true;

grank=rank;

}

--------------------------------------------------------------------------------------------------------------------------------------------------

#include <iostream>

#include <string>

#include <fstream>

#include <cstdlib>


using namespace std;


void find_name(string);


int main ()

{

string name;

  

cout << "Enter a baby name to see how popular it is: ";

cin >> name;

  

find_name (name);

return 0;

}



void find_name (string name)

{

int rank, brank,grank;

string male, female;

ifstream fin;

bool male_rank = false, female_rank = false;

  

  

fin.open ("4.txt");

  

if (fin.fail() && male_rank == false && female_rank == false)

{

cout << "The file can not be opened. ";

exit(1);

}

  

  

while (!fin.eof() && male_rank == false || female_rank == false)

  

{

fin>>rank>>male>>female;

if (name == male)

{male_rank=true;

brank = rank;

}

if (name == female)

{female_rank=true;

grank=rank;

}

}

  

if(male_rank == true && female_rank != true)

{

cout << " "<<name << " is ranked " << brank << " in popularity among boys. ";

cout << " "<<name << " is not ranked among the top 1000 girl names. ";

}

else if (!male_rank== true && female_rank == true)

{

cout << " "<<name << " is not ranked among the top 1000 boys names. ";

cout <<" "<< name << " is ranked " << grank << " in popularity among girls. ";

}

else if (male_rank == true && female_rank == true)

{

cout <<" "<< name << " is ranked " << brank << " in popularity among boys. ";

cout <<" "<< name << " is ranked " << grank << " in popularity among girls. ";

}

else if (male_rank != true && female_rank != true)

{

cout << " "<<name << " is not ranked among the top 1000 boys names. ";

cout <<" "<< name << " is not ranked among the top 1000 girl names. ";

}

  

fin.close( );

}