#include <iostream>
#include <iomanip>
#include <string>
#include <time.h>

using namespace std;

#define NUM_FORMADORES	30
#define NOME_TAM		20
#define NUM_MES			12

/////////////////////////////////////////
///Parte II
///Funcoes auxiliares
///esta função serve unicamente para inicializar as matrizes
//void inicalizaDados(char nomes[NUM_FORMADORES][NOME_TAM],int horas[NUM_FORMADORES][NUM_MES])
void inicalizaDados(char nomes[][NOME_TAM],int horas[][NUM_MES])
{
	srand(time(NULL));
	for(int i=0;i<NUM_FORMADORES;i++){
		sprintf(nomes[i],"Formador %d",i+1);
	}
	for(i=0;i<NUM_FORMADORES;i++){
		for(int j=0;j<NUM_MES;j++){
			///vamos supor que por mes o numero maximo de horas é 100
			horas[i][j]=(int) 100 * (	1.0 * rand()/RAND_MAX );		
		}
	}
}
//void listar(char nomes[NUM_FORMADORES][NOME_TAM],int horas[NUM_FORMADORES][NUM_MES])
void listar(char nomes[][NOME_TAM],int horas[][NUM_MES])
{
	cout<<setw(NOME_TAM)<<setfill(' ')<<setiosflags(ios::left)<<"NOME"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"JAN"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"FEV"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"MAR"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"ABR"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"MAI"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"JUN"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"JUL"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"AGO"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"OUT"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"NOV"
		<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<"DEZ"
		<<endl;
	for(int i=0;i<NUM_FORMADORES;i++){
		cout<<setw(NOME_TAM)<<setfill(' ')<<setiosflags(ios::left)<<nomes[i];
		for(int j=0;j<NUM_MES;j++){
			cout<<setw(4)<<setfill(' ')<<setiosflags(ios::left)<<horas[i][j];
		}
		cout<<endl;
	}
}
/////////////////////////////////////////
//int calcula_pagamento(char nomes[NUM_FORMADORES][NOME_TAM],int horas[NUM_FORMADORES][NUM_MES], char nome_formador[NOME_TAM], int valor_hora)
int calcula_pagamento(char nomes[][NOME_TAM],int horas[][NUM_MES], char nome_formador[], int valor_hora)
{
	int total;
	for(int i=0;i<NUM_FORMADORES;i++){
		if(strcmp(nomes[i],nome_formador)==0){
			total=0;
			for(int j=0;j<NUM_MES;j++){
				total+=horas[i][j] * valor_hora;
			}
			return total;
		}
	}
	return -1;
}
void main()
{
	char nomes[NUM_FORMADORES][NOME_TAM];
	char nome_formador[NOME_TAM];
	int horas[NUM_FORMADORES][NUM_MES];
	////////////////////////////
	inicalizaDados(nomes,horas);
	listar(nomes,horas);
	////////////////////////////
	cout<<"Indique o nome do formador: ";
	cin.getline(nome_formador,NOME_TAM);
	int valor=calcula_pagamento(nomes,horas, nome_formador,10);
	if(valor!=-1)
		cout<<"O formador "<< nome_formador<<" tem a receber "<<valor<<endl;
	else
		cout<<"O formador "<< nome_formador<<" nao existe \n";
}