Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

viciado

Super Algoritmo

Recommended Posts

Uma empresa contratou 15 funcionários temporários. De acordo com o valor de vendas mensais, os funcionários ganham pontos que determinaram seus salarios ao final de cada mês. Sabe-se que eles trabalharão nos meses de Julho/2008 a Fevereiro/2009.

Faça um algoritmo que:

1) Cadastre os nomes dos funcionários e suas respectivas vendas mensais

2) Calcule e mostre a pontuação geral de cada funcionário no período. Cada R$ equivalem a 1 ponto

3) Calcule e mostre a pontuação geral de todos os funcionários a cada mês

4) Determine e mostre a maior pontuação do período, com o respectivo nome do funcionário

5) Determine e mostre o valor total vendido

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é simples.

Tente fazer, pois se não começar não vai conseguir mesmo.

Leia os 15 nomes e guarde numa matriz o valor de venda de cada um por mês.

A matriz será 15x8.

 

 

Pensei aqui e não consegui como ninguem tinha conseguido resolvi postar aqui o desafio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é simples.

Tente fazer, pois se não começar não vai conseguir mesmo.

Leia os 15 nomes e guarde numa matriz o valor de venda de cada um por mês.

A matriz será 15x8.

 

 

Pensei aqui e não consegui como ninguem tinha conseguido resolvi postar aqui o desafio

 

Ok vou tentar. Mais eu me cadastrei num forum que manda email com desafios de algoritmos e ninguem conseguiu resolver esse, por isso resolvi postar aqui. Falando nisso existe alguma area especifica com desafios de algoritmos aqui no forum? Pq recebo varios e poderia repassar os desafios para todos

 

VLW

Compartilhar este post


Link para o post
Compartilhar em outros sites
 class Funcionario {
def nome
def periodo = ['jul08':0,'ago08':0,'set08':0,'out08':0,'nov08':0,'dez08':0,'jan09':0,'fev09':0]
Funcionario(fNome,fVendas) {
   nome = fNome
   def indice = 0
   periodo.each() { k,v->
	 periodo[k] = fVendas[indice]
	 indice++
   }
}
}

limite = 5

def cadastrar (fLista) {
  def tmpNome,tmpLista,tmp
  def r
  def meses = ["julho/08","agosto/08","setembro/08","outubro/08","novembro/08","dezembro/08","janeiro/09","fevereiro/09"]
  limite.times {
 r = new Scanner(System.in)
 tmpLista = []
 println "@@@@@@@@ CADASTRO @@@@@@@"
 print "Nome:"
 tmpNome = r.nextLine()
 print "\nLista de vendas:"
 meses.each {
   print "\n$it : "
   tmp = Float.parseFloat(r.next())
   tmpLista.push(tmp)
 }
 r.finalize()
 fLista[it] = new Funcionario(tmpNome,tmpLista)
  }
}

Funcionario[] lista = new Funcionario[limite]
cadastrar(lista)

println "\n Pontuacao geral de cada funcionario:"
lista.each() { System.out.printf("%s : %.0f\n",it.nome,it.periodo.values().sum()) }

println "\nPontuacao geral mes a mes:"
lista.each() { func ->
  println "${func.nome} :"
  func.periodo.each() { key,val ->
  System.out.printf("\t\t %s:%.0f\n",key,val)
  }
}


def total = 0
lista.each() { total+=it.periodo.values().sum() }
System.out.printf("\nValor total vendido: %.2f\n",total)


def tmp = []
lista.each() { tmp.push(it.periodo.values().sum()) }
System.out.printf("\nMaior pontuacao: %s , %.0f\n",lista[tmp.indexOf(tmp.max())].nome , tmp.max())

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ae acho q é isso implementou em alguma linguagem? Parabéns cara, o próximo desafio que eu receber eu posto aqui no forum

 

Esse estava como nível de 6 de uma escala de 0 a 10

Compartilhar este post


Link para o post
Compartilhar em outros sites
implementou em alguma linguagem?

 

Não conhece Groovy?

 

Esse estava como nível de 6 de uma escala de 0 a 10

 

Dava no máximo 3.Lista e struct são coisas básicas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

implementou em alguma linguagem?

Não conhece Groovy?

 

Esse estava como nível de 6 de uma escala de 0 a 10

Dava no máximo 3.Lista e struct são coisas básicas.

 

 

Não conheço você tem em C?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não.Mas se for traduzir,nao use queue.h : o manual é ruim e dizem que dá problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viciado você tem o site desse lugar que passam desafios, poderia passa pra galera.

 

Nem me lembro cara eu me cadastrei e eles mandam pro email

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz alguma coisa, críticas e sugestões são bem vindas.

Obs.: Os meses não coloquei todos, apenas dois pra testar.

 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE_VETOR 10
#define SIZE_VENDAS 8

typedef struct
{
	char nome[60];
	float vendas_mensais[SIZE_VENDAS];
}Funcionarios;

void Menu();
void ExecutaOpcao(int op, Funcionarios *cadastro);

int CadastroVendedor(char *nome,Funcionarios *cadastrar);
int CadastroVendas(Funcionarios *cadastrar, char *nom);
void ExibeVendedor(Funcionarios *cadastrar);
int PontuacaoVendedor(Funcionarios *cadastrar, int i);
int PontuacaoGeralMes(Funcionarios *cadastrar, int j);
void PontuacaoMaiorGeral(Funcionarios *cadastrar, char *nom, int &mai);
float ValorTotalVendido(Funcionarios *cadastrar);
void InicializaVetorZerado(Funcionarios *cadastrar);
int VerificaPosicaoLivre(Funcionarios *cadastrar);

int main()
{
	int opcao;
	Funcionarios cadastro[SIZE_VETOR];
	InicializaVetorZerado(cadastro);
	VerificaPosicaoLivre(cadastro);

	do
	{
		Menu();
		printf("\n\nDigite uma opcao: ");
		scanf("%d",&opcao);
		ExecutaOpcao(opcao,cadastro);
	}while(opcao != 7);


	return(0);
}

void Menu()
{
	printf("1. Cadastrar Vendedor");	
	printf("\n2. Cadastrar Vendas Mensais");
	printf("\n3. Exibir Vendedores");
	printf("\n4. Exibir Pontuacao Geral/Mes");
	printf("\n5. Maior Pontuacao");
	printf("\n6. Valor Total Vendido");
	printf("\n7. Sair\n\n");
}

void ExecutaOpcao(int op, Funcionarios *cadastro)
{
	char nome[60];
	char nome1[60];
	int j;
	int maior = 0;
	char nome_vendedor[60];
	switch(op)
	{
		case 1:
			printf("\nNome do Vendedor: ");
			scanf("%s",&nome);
			if(CadastroVendedor(nome,cadastro))
				printf("VENDEDOR CADASTRADO COM SUCESSO!\n\n");
			else
				printf("CADASTRO LOTADO!\n\n");
		break;
		case 2:
			printf("\nNome do Vendedor: ");
			scanf("%s",&nome1);
			if(CadastroVendas(cadastro,nome1))
				printf("VENDA CADASTRADA COM SUCESSO!\n\n");
			else
				printf("VENDEDOR NAO ENCONTRADO!!\n\n");
		break;
		case 3:
			ExibeVendedor(cadastro);
		break;
		case 4:
			system("cls");
			for(j=0;j<SIZE_VENDAS;j++)
			{
				printf("Pontuacao Total do Mes[%d]: %d\n",j,PontuacaoGeralMes(cadastro,j));
			}
			printf("\n\n");
		break;
		case 5:
			system("cls");
			PontuacaoMaiorGeral(cadastro,nome_vendedor,maior);
			printf("O MAIOR PONTUADOR FOI %s COM %d PONTOS.\n\n",nome_vendedor,maior);
		break;
		case 6:
			system("cls");
			printf("O Valor total vendido foi: %.2f\n\n",ValorTotalVendido(cadastro));
		break;
		case 7:
			printf("\nS A I N D O . . .");
		break;
		default:
			system("cls");
			printf("OPCAO INVALIDA!\n\n");
	}
}

int CadastroVendedor(char *nome,Funcionarios *cadastrar)
{
	int i;
	i = VerificaPosicaoLivre(cadastrar);
	if(i == -1)
	{
		system("cls");
		return(0);
	}
	else
	{
		strcpy((cadastrar+i)->nome,nome);
		system("cls");
		return(1);
	}
}

int CadastroVendas(Funcionarios *cadastrar, char *nom)
{
	int i, j = 0;
	for(i=0;i<SIZE_VETOR;i++)
	{
		if( strcmp( (cadastrar+i)->nome,nom) == 0)
		{
			printf("\nJULHO/2008: ");
			scanf("%f",(cadastrar+i)->vendas_mensais+j);
			j++;
			printf("AGOSTO/2008: ");
			scanf("%f",(cadastrar+i)->vendas_mensais+j);
			system("cls");
			return(1);
		}
	}
	system("cls");
	return(0);
}

void ExibeVendedor(Funcionarios *cadastrar)
{
	int i,j;
	system("cls");
	for(i=0;i<SIZE_VETOR;i++)
	{
		if(strcmp((cadastrar+i)->nome,"0") != 0)
		{
			j = 0;
			printf("Vendedor[#%d]: %s",i,(cadastrar+i)->nome);
				printf("\nJULHO/2008: %.2f",(cadastrar+i)->vendas_mensais[j]);
				j++;
				printf("\nAGOSTO/2008: %.2f",(cadastrar+i)->vendas_mensais[j]);
				printf("\n\nTotal de pontos: %d",PontuacaoVendedor(cadastrar,i));
				printf("\n-------------------------------------\n");
		}
		
	}
	printf("\n\n");
}

int PontuacaoVendedor(Funcionarios *cadastrar, int i)
{
	int j,total_pontos = 0;
	for(j=0;j<SIZE_VENDAS;j++)
	{
		total_pontos += (cadastrar+i)->vendas_mensais[j];
	}
	return(total_pontos);
}


int PontuacaoGeralMes(Funcionarios *cadastrar, int j)
{
	int i,pontuacao_total_mes = 0;

	for(i=0;i<SIZE_VETOR;i++)
	{
		pontuacao_total_mes += (cadastrar+i)->vendas_mensais[j];
	}
	return(pontuacao_total_mes);
}

void PontuacaoMaiorGeral(Funcionarios *cadastrar, char *nom, int &mai)
{
	int i = 0;
	mai = PontuacaoVendedor(cadastrar,i);
	for(i=0;i<SIZE_VETOR;i++)
	{
		if((mai) < (PontuacaoVendedor(cadastrar,i)))
		{
			mai = PontuacaoVendedor(cadastrar,i);
			strcpy(nom,(cadastrar+i)->nome);
		}
	}
}

float ValorTotalVendido(Funcionarios *cadastrar)
{
	int i,j;
	float total = 0;
	for(i=0;i<SIZE_VETOR;i++)
	{
		for(j=0;j<SIZE_VENDAS;j++)
		{
			total += (cadastrar+i)->vendas_mensais[j];
		}
	}
	return(total);
}

void InicializaVetorZerado(Funcionarios *cadastrar)
{
	int i,j;
	for(i=0;i<SIZE_VETOR;i++)
	{
		strcpy((cadastrar+i)->nome,"0");
		for(j=0;j<SIZE_VENDAS;j++)
		{
			(cadastrar+i)->vendas_mensais[j] = 0;
		}
	}
}

int VerificaPosicaoLivre(Funcionarios *cadastrar)
{
	int i;
	for(i=0;i<SIZE_VETOR;i++)
	{
		if(strcmp((cadastrar+i)->nome,"0") == 0)
			return(i);
	}
	return(-1);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.