-
December 17th, 2013, 03:16 PM
#1
Help cleaning code for better console presentation
Hi guys,
I have this function and it works, the problem is that it couts a bunch of stuff that I don't need. What this functions does asks the user to input a job (show) and if the show is found to list all the talents (actors/actresses). If the show is not found, to print "show not found". I have the function working just need to present it better. What I want the function to do is just print "show not found" and nothing else. How I have it currently will print:
Thanks
Notice how its outputting all the unnecessary information. If the job is found should look like this:
Uploaded with ImageShack.us
Code:
void TalentsByJob(Agency Talents[], int limit)
{
system("CLS");
string show;
cout << "Enter the Job: ";
cin >> show;
bool found = false;
cout << "List of Talents for the Job: " << show << endl;
cout << "\nTalent\t\t" << "\tPay\n" << endl;
for (int i = 0; i < limit; i++)
{
if(Talents[i].job == show)
{
cout << Talents[i].talent << "\t\t\t" << Talents[i].pay << endl;
found = true;
}
}
cout << "\nTotal amount paid for the Job: " << findSum(Talents, limit, show) << endl;
cout << "Highest paid Talent: " << findMax(Talents, limit, show) << endl;
cout << "Lowest paid Talent: " << findMin(Talents, limit, show) << endl;
cout << "Average amount paid for the Job: " << findAvg(Talents, limit, show) << endl;
cout << endl;
if(!found)
cout << "\nJob not found!\n" << endl;
system("PAUSE");
system("CLS");
}
-
December 17th, 2013, 03:36 PM
#2
Re: Help cleaning code for better console presentation
What's the problem? If found is true then display the stats for the found job. If found is false, just output job not found. Output the heading if the job is found and found is not true.
This is simple program design logic.
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
-
December 17th, 2013, 03:46 PM
#3
Re: Help cleaning code for better console presentation
The function works its just I don't want so much output if the job is not found.
displaying the max, min and avg and total is not necessary since the job is not found in the database.
-
December 17th, 2013, 04:04 PM
#4
Re: Help cleaning code for better console presentation
Originally Posted by shyy
The function works its just I don't want so much output if the job is not found.
displaying the max, min and avg and total is not necessary since the job is not found in the database.
That's what I was talking about in my post #2. Only output what is required. It comes down to program design again.
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
-
December 17th, 2013, 04:12 PM
#5
Re: Help cleaning code for better console presentation
Where I am getting confused is when I put in the for loop in the beginning. If I put both
Code:
cout << "List of Talents for the Job: " << show << endl;
cout << "\nTalent\t\t" << "\tPay\n" << endl;
in the if statement where its found = true, it would cout x amount of times those two sentences. That is why I placed them on top.
-
December 17th, 2013, 04:24 PM
#6
Re: Help cleaning code for better console presentation
Originally Posted by shyy
Where I am getting confused is when I put in the for loop in the beginning. If I put both
Code:
cout << "List of Talents for the Job: " << show << endl;
cout << "\nTalent\t\t" << "\tPay\n" << endl;
in the if statement where its found = true, it would cout x amount of times those two sentences. That is why I placed them on top.
You know if the job is found or not and you know how to use if statements. Use those two pieces of knowledge to conditionally output whatever you want to.
Code:
if(found)
{
output something
}
else
{
output something else
}
-
December 17th, 2013, 04:36 PM
#7
Re: Help cleaning code for better console presentation
Originally Posted by shyy
Where I am getting confused is when I put in the for loop in the beginning. If I put both
Code:
cout << "List of Talents for the Job: " << show << endl;
cout << "\nTalent\t\t" << "\tPay\n" << endl;
in the if statement where its found = true, it would cout x amount of times those two sentences. That is why I placed them on top.
The first step, as I've said in another post, is to produce a design before you start coding. It's no good just trying to 'fix' some code that isn't doing what you want. You need to design first, then code the design, then test/debug as required.
For the moment, forget the code. Design the function in English (or other natural language) to say how you would do what is required if you were doing it yourself using pen and paper. Only when you have a design that you are satisfied with do you then code the function from the design.
In this case, the design/code is fairly trivial and IMO I would have expected no problems with it if you are going to sit a final exam shortly.
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
-
December 17th, 2013, 04:41 PM
#8
Re: Help cleaning code for better console presentation
Am I getting close with the syntax?
Code:
void TalentsByJob(Agency Talents[], int limit)
{
system("CLS");
string show;
cout << "Enter the Job: ";
cin >> show;
bool found = false;
for (int i = 0; i < limit; i++)
if(Talents[i].job == show)
found = true;
else
found = false;
if(found == true)
{
cout << "Found";
}
else
{
cout << "not Found";
}
system("PAUSE");
system("CLS");
}
-
December 17th, 2013, 04:43 PM
#9
Re: Help cleaning code for better console presentation
Kind of, but you have a pretty big logic bug in your for loop that wasn't in your first post.
-
December 17th, 2013, 04:59 PM
#10
Re: Help cleaning code for better console presentation
is it how I am implementing the found? My biggest problem is with the header, how to not get it to repeat but only show if the show is found. I don't know how to implement that, since the for loop will always loop the header.
-
December 17th, 2013, 05:10 PM
#11
Re: Help cleaning code for better console presentation
Whay happens if you move the header output into the for loop, but only output it if show is found and header has not already been output?
In your if-statement within the for loop, what happens to found if some elements of the array match show and then some more don't?
Would it output found or not-found?
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
-
December 17th, 2013, 05:11 PM
#12
Re: Help cleaning code for better console presentation
What I have so far
Code:
void TalentsByJob(Agency Talents[], int limit)
{
system("CLS");
string show;
cout << "Enter the Job: ";
cin >> show;
bool found = false;
for (int i = 0; i < limit; i++)
{
if(Talents[i].job == show)
{
found = true;
}
else
{
found = false;
}
}
if(!found)
{
cout << "List of Talents for the Job: " << show << endl;
cout << "\nTalent\t\t" << "\tPay\n" << endl;
for (int i = 0; i < limit; i++)
if(Talents[i].job == show)
cout << Talents[i].talent << "\t\t\t" << Talents[i].pay << endl;
}
else
{
cout << "Job not Found\n";
}
system("PAUSE");
system("CLS");
}
-
December 17th, 2013, 05:15 PM
#13
Re: Help cleaning code for better console presentation
Why is it if I put if(found == true) I get not found for both if its found and not found?
-
December 17th, 2013, 05:17 PM
#14
Re: Help cleaning code for better console presentation
Got it working! Thanks guys!
Code:
void TalentsByJob(Agency Talents[], int limit)
{
system("CLS");
string show;
cout << "Enter the Job: ";
cin >> show;
bool found = false;
for (int i = 0; i < limit; i++)
{
if(Talents[i].job == show)
{
found = true;
}
else
{
}
}
if(found == true)
{
cout << "List of Talents for the Job: " << show << endl;
cout << "\nTalent\t\t" << "\tPay\n" << endl;
for (int i = 0; i < limit; i++)
if(Talents[i].job == show)
cout << Talents[i].talent << "\t\t\t" << Talents[i].pay << endl;
cout << "\nTotal amount paid for the Job: " << findSum(Talents, limit, show) << endl;
cout << "Highest paid Talent: " << findMax(Talents, limit, show) << endl;
cout << "Lowest paid Talent: " << findMin(Talents, limit, show) << endl;
cout << "Average amount paid for the Job: " << findAvg(Talents, limit, show) << endl;
cout << endl;
}
else
{
cout << "Job not Found\n";
}
system("PAUSE");
system("CLS");
}
-
December 17th, 2013, 05:34 PM
#15
Re: Help cleaning code for better console presentation
Yes - but that code is inefficient as you are iterating Talents twice rather than the one needed.
Code:
void TalentsByJob(const Agency Talents[], const int limit)
{
string show;
cout << "Enter the Job: ";
cin >> show;
bool found = false;
for (int i = 0; i < limit; i++)
{
if(Talents[i].job == show)
{
if (found == false)
{
cout << "List of Talents for the Job: " << show << endl;
cout << "\nTalent\t\t" << "\tPay\n" << endl;
}
cout << Talents[i].talent << "\t\t\t" << Talents[i].pay << endl;
found = true;
}
}
if(found == true)
{
cout << "\nTotal amount paid for the Job: " << findSum(Talents, limit, show) << endl;
cout << "Highest paid Talent: " << findMax(Talents, limit, show) << endl;
cout << "Lowest paid Talent: " << findMin(Talents, limit, show) << endl;
cout << "Average amount paid for the Job: " << findAvg(Talents, limit, show) << endl;
cout << endl;
}
else
{
cout << "Job not Found\n";
}
}
Also, as you are not altering the contents of Talents, it is better practice to mark as const - so any unintential change is flagged up by the compiler.
All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!
C++23 Compiler: Microsoft VS2022 (17.6.5)
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|