Signature block

Sep 21, 2013 at 10:06pm
For C++ class we were assigned to write a simple introductory C++ program.
One of the requirements was that a signature block be included with the output of the program. Here is what I came up with:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string>
using namespace std;

int main()
{
	// signature block
	cout << "-----------------------------" << endl;
	cout << "Jim Jones" << endl;
	cout << "jim.jones@gmail.com" << endl;
	cout << "C++ Programming" << endl;
	cout << "Fall 2013" << endl;
	Cout << "-----------------------------" << endl << endl;
	
	// request user's name and store in a variable
	string name;
	cout << "What is your name? ";
	getline( cin, name );
	
	// print "Hello" and the user's name
	cout << "Hello, " << name << "!" << endl;
		
	return 0;
}


I lost points on the signature block portion. Here are the comments I got with my grade:

"Signature block implementation should be separate file. Good job using getline. Use strings or single formatted line for signature block instead of line-by-line outputs."

Being new to C++, I'm not sure exactly what the instructor is looking for. There were no specific instructions on how to implement the signature block and, after I emailed my instructor requesting more info, he has not written back.

So, I was hoping someone on this forum could provide some insight. How can I implement the signature block in a separate file? Should I create a signature block class and create a new signature block object in the main function?

Thanks for any suggestions.
Last edited on Sep 21, 2013 at 10:12pm
Sep 21, 2013 at 11:20pm
The instructor means that you have to put your signature in a file that can be included in your program, so that, for example, in a work environment, not all people will be stuck with your signature, and will only have to change a single file to change the signature. So first, put your signature in function:

1
2
3
4
5
6
7
8
9
void DoSign()
{
	cout << "-----------------------------" << endl;
	cout << "Jim Jones" << endl;
	cout << "jim.jones@gmail.com" << endl;
	cout << "C++ Programming" << endl;
	cout << "Fall 2013" << endl;
	cout << "-----------------------------" << endl << endl;
}


And then put all that in a separate file, say "JimSignature.h", and in your main.cpp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>

using namespace std;

#include "JimSignature.h"

int main()
{
	// signature block
        DoSign();
	
	// request user's name and store in a variable
	string name;
	cout << "What is your name? ";
	getline( cin, name );
	
	// print "Hello" and the user's name
	cout << "Hello, " << name << "!" << endl;
		
	return 0;
}


So now if another person takes over your program, they could just change the include file "JimSignature.h" and they'll have a different signature.

Of course, this is not the proper way to do signatures, but it's just for learning purposes.
Last edited on Sep 21, 2013 at 11:21pm
Sep 21, 2013 at 11:59pm
Nice. Thanks for the help.

The instructor also didn't seem to like how I used multiple cout lines. In the comments with my grade he wrote, "Use strings or single formatted line for signature block instead of line-by-line outputs."

Does he mean just put the entire message into a string variable?
Sep 22, 2013 at 1:30am
1
2
3
4
cout << 
  "-------------------\n"
  "Jimtastically Done!\n"
  "-------------------\n";

All one string.

[edit] You could also make your function just return the string itself:

1
2
3
4
5
6
7
const char* JimSignature()
{
  return
    "-------------------\n"
    "Jimtastically Done!\n"
    "-------------------\n";
}
 
cout << JimSignature();


Hope this helps.
Last edited on Sep 22, 2013 at 1:32am
Sep 22, 2013 at 5:30am
That helps a lot. Thanks! The newline character looks much neater and I'm assuming its cheaper than multiple calls to cout.
Topic archived. No new replies allowed.