When i compile the below program i get two errors stating the following: Thanks in advance for your help. I have no idea how to get these fixed.



main.cpp(9): warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data

main.cpp(19): error C2660: 'report' : function does not take 4 arguments


in file main.c:

Code:
#include "p_r_s.h"

int main(void)
{
	int			win_cnt = 0, lose_cnt = 0, tie_cnt = 0;
	outcome		result;
	p_r_s		player_choice, machine_choice;

	srand(time(NULL));
	print_instructions();

	while	((player_choice = selection_by_player()) != quit)
		switch (player_choice) {
			case paper:
			case rock:
			case scissors:
				machine_choice = selection_by_machine();
				result = compare(player_choice, machine_choice);
				report(result, &win_cnt, &lose_cnt, &tie_cnt);
				break;
			case game:
				print_game_status(win_cnt, lose_cnt, tie_cnt);
				break;
			case instructions:
				print_instructions();
				break;
			case help:
				print_help();
				break;
			default:
				printf("PROGRAMMER ERROR: Cannot get to here!\n\n");
				exit(1);
		}
	print_game_status(win_cnt, lose_cnt, tie_cnt);
	print_final_status(win_cnt, lose_cnt);
	return 0;
}

in file p_r_s.h:

Code:
/*The game of paper, rock, and scissors. */

#include <ctype.h>		/* for isspace()  */
#include <stdio.h>		/* for printf(), etc  */
#include <stdlib.h>		/* for rand() and srand()  */
#include <time.h>		/* for time()  */

enum p_r_s {paper, rock, scissors,
game, help, instructions, quit};

enum outcome {win, lose, tie, error};

typedef		enum p_r_s		p_r_s;
typedef		enum outcome	outcome;

outcome		compare(p_r_s player_choice, p_r_s machine_choice);
void		print_final_status(int win_cnt, int lose_cnt);
void		print_game_status(int win_cnt,
							  int lose_cnt, int tie_cnt);

void		print_help(void);
void		print_instructions(void);
void		report(outcome result, int *win_cnt_ptr,
				int *lose_cnt_ptr, int *tie_cnt_ptr, 
				p_r_s player_choice, p_r_s machine_choice);

p_r_s		selection_by_machine(void);
p_r_s		selection_by_player(void);
in file print.c:

Code:
#include "p_r_s.h"

void print_final_status(int win_cnt, int lose_cnt)
{
	if (win_cnt > lose_cnt)
		printf("CONGRATULATIONS - You won!\n\n");
	else if (win_cnt == lose_cnt)
		printf("A DRAW - You tied!\n\n");
	else
		printf("SORRY - You lost!\n\n");
}


void print_game_status(int win_cnt, int lose_cnt, int tie_cnt)
{
	printf("\n%s\n%s%4d\n%s%4d\n%s%4d\n%s%4d\n\n",
		"GAME STATUS:",
		"	Win:	", win_cnt,
		"	Lose:	", lose_cnt,
		"	Tie:	", tie_cnt,
		"	Total:	", win_cnt + lose_cnt + tie_cnt);
}

void print_help(void)
{
	printf("\n%s\n",
		"The following characters can be used for input:\n"
		"	p	for paper\n"
		"	r	for rock\n"
		"	s	for scissors\n"
		"	g	print the game status\n"
		"	h	help, print this list\n"
		"	i	reprint the instructions\n"
		"	q	quit this game\n");
}

void print_instructions(void)
{
	printf("\n%s\n",
		"PAPER, ROCK, SCISSORS:\n"
		"\n"
		"In this game\n"
		"\n"
		"	p is for \"paper\"\n"
		"	r is for \"rock\"\n"
		"	s is for \"scissors\"\n"
		"\n"
		"Both player and the machine will choose one\n"
		"of p, r, or s. If the two chcices are the same,\n"
		"then the game is a tie. Otherwise:\n"
		"\n"
		"	\"paper covers the rock\"		(a win for paper)\n"
		"	\"rock breaks the scissors\"	(a win for rock)\n"
		"	\"scissors cut the paper\"		(a win for scissors)\n"
		"\n"
		"There are other allowable inputs:\n"
		"	g for game status	(print number of wins)\n"
		"	h for help			(print short instructions)\n"
		"	i for instructions	(print these instructions)\n"
		"	q for quit			(quit the game)\n"
		"\n"
		"This game is played repeatedly until q is entered.\n"
		"\n"
		"Good luck!\n");
}
in file select.c:
Code:
#include "p_r_s.h"

p_r_s selection_by_machine(void)
{
	return ((p_r_s) (rand() % 3));
}

p_r_s selection_by_player(void)
{
	char	c;
	p_r_s	player_choice;

	printf("Input p, r, or s:	");
	scanf("%c", &c);
	switch (c) {
	case 'p':
		player_choice = paper;
		break;
	case 'r':
		player_choice = rock;
		break;
	case 's':
		player_choice = scissors;
		break;
	case 'g':
		player_choice = game;
		break;
	case 'i':
		player_choice = instructions;
		break;
	case 'q':
		player_choice = quit;
		break;
	default:
		player_choice = help;
		break;
	}
	return player_choice;
}
in file compare.c:
Code:
#include "p_r_s.h"

outcome compare(p_r_s player_choice, p_r_s machine_choice)
{
	outcome		result;

	if (player_choice == machine_choice)
		return tie;
	switch (player_choice) {
	case paper:
		result = (machine_choice == rock) ? win : lose;
		break;
	case rock:
		result = (machine_choice == scissors) ? win : lose;
		break;
	case scissors:
		result = (machine_choice == paper) ? win : lose;
		break;
	default:
		printf("PROGRAMMER ERROR: Unexpected choice!\n\n");
		exit(1);
	}
	return result;
}
in file report.c:

Code:
#include "p_r_s.h"

void report(outcome result, int *win_cnt_ptr,
			int *lose_cnt_ptr, int *tie_cnt_ptr,
			p_r_s player_choice, p_r_s machine_choice)
{
	static const char *text[] = { "paper", "rock", "scissors" };
	printf("player chose %s, machine choose %s : You ",
        text[player_choice], text[machine_choice]);
	switch (result) 
	{
	case win:
		++*win_cnt_ptr;
		puts("win.");
		break;
	case lose:
		++*lose_cnt_ptr;
		puts("lose.");
		break;
	case tie:
		++*tie_cnt_ptr;
		puts("tie.");
		break;
	default:
		printf("PRGORAMMER ERROR: Unexpected result!\n\n");
		exit(1);
	}
}