Ajuda com exercicio

9 respostas
pasqualli2006

Alguem poderia me ajudar com este exercicio?

  1. Uma determinada fabrica de rádios possui duas linhas de montagens distintas: Standard e Luxo. A linha de montagem Standart comporta o maximo de 24 operarios, cada radio standard da um lucro de x reais e gasta um homem dia para sua confecção a linha de montagem luxo, comporta no maximo 32 operarios; cada radio luxo da um lucro de y reais e gasta 2 homens dias para sua confecção. A fabrica possui 40 operarios o mercado é capaz de absorver toda a produção e o fabricante deseja saber qual esquema de produção a adotar de modo a maximizar seu lucro diário. Fazer um programa que leia os valores de x e y e escreva, para esse esquema de lucro maximo o numero de operários na linha standard e na linha luxo, o numero de rádios standard e luxo produzidos e o lucro.:
Lucro = x<em>nradiosStandard + y</em>nradioLuxo

nRadiosStandard=1*nHomemAlocLinhaStand  (maximo 24 homens)

nRadioLuxo=nhomensAlocadosLinhaLuxo / 2 (maximo 32 homens)

Chegar nesses dois valores

fazer for**

Obrgado!

9 Respostas

P

E em que ponto você encontrou dificuldade?

Explica qual a dúvida que o pessoal ajuda dentro do possível. Mas não espere a solução pronta não.

Abraço

ramonchiara

Deixei no ponto, hein…

import java.util.ArrayList;
import java.util.List;

// TODO Testes
// TODO Javadocs
// TODO Entrada de dados
// TODO Fazer Iteração para achar o lucro máximo

public class ProblemaDoLucroMaximo {

	public static void main(String[] args) {
		Fabrica fabrica = new Fabrica(40);
		int standard = fabrica.addLinha(24, 1);
		int luxo = fabrica.addLinha(32, 2);

		fabrica.setLucro(standard, 10);
		fabrica.setLucro(luxo, 10);

		fabrica.setOperarios(standard, 20);
		fabrica.setOperarios(luxo, 20);

		double lucroPorDia = fabrica.getLucroPorDia();
		System.out.println("lucroPorDia = " + lucroPorDia);
	}

}

class Fabrica {

	private int maxOperarios;
	private List<Linha> linhas = new ArrayList<Linha>();

	public Fabrica(int maxOperarios) {
		// TODO consistir maxOperarios

		this.maxOperarios = maxOperarios;
	}

	public int getMaxOperarios() {
		return maxOperarios;
	}

	public int addLinha(int maxOperarios, double tempo) {
		// TODO consistir maxOperarios
		// TODO consistir tempo

		Linha linha = new Linha(maxOperarios, tempo);
		linhas.add(linha);

		return linhas.indexOf(linha);
	}

	public void removeLinha(int linhaIndex) {
		// TODO consistir linhaIndex?

		linhas.remove(linhaIndex);
	}

	public int getOperarios() {
		int operarios = 0;

		for (Linha linha : linhas) {
			operarios += linha.getOperarios();
		}

		return operarios;
	}

	public double getQuantidadePorDia() {
		double quantidadePorDia = 0.0;

		for (Linha linha : linhas) {
			quantidadePorDia += linha.getQuantidadePorDia();
		}

		return quantidadePorDia;
	}

	public double getLucroPorDia() {
		double lucroPorDia = 0.0;

		for (Linha linha : linhas) {
			lucroPorDia += linha.getLucroPorDia();
		}

		return lucroPorDia;
	}

	public int getMaxOperarios(int linhaIndex) {
		// TODO consistir linhaIndex?

		return linhas.get(linhaIndex).getMaxOperarios();
	}

	public double getTempo(int linhaIndex) {
		// TODO consistir linhaIndex?

		return linhas.get(linhaIndex).getTempo();
	}

	public void setLucro(int linhaIndex, double lucro) {
		// TODO consistir linhaIndex?
		// TODO consistir lucro

		linhas.get(linhaIndex).setLucro(lucro);
	}

	public double getLucro(int linhaIndex) {
		// TODO consistir linhaIndex?

		return linhas.get(linhaIndex).getLucro();
	}

	public void setOperarios(int linhaIndex, int operarios) {
		// TODO consistir linhaIndex?
		// TODO consistir operarios

		if (getOperarios() + operarios > getMaxOperarios()) {
			throw new IllegalArgumentException("Esta fábrica suporta, no máximo, " + getMaxOperarios() + " operários.");
		}

		linhas.get(linhaIndex).setOperarios(operarios);
	}

	public double getOperarios(int linhaIndex) {
		// TODO consistir linhaIndex?

		return linhas.get(linhaIndex).getOperarios();
	}

	public double getQuantidadePorDia(int linhaIndex) {
		// TODO consistir linhaIndex?

		return linhas.get(linhaIndex).getQuantidadePorDia();
	}

	public double getLucroPorDia(int linhaIndex) {
		// TODO consistir linhaIndex?

		return linhas.get(linhaIndex).getLucroPorDia();
	}
}

class Linha {

	int maxOperarios;
	double tempo;
	double lucro;
	int operarios;

	public Linha(int maxOperarios, double tempo) {
		// TODO consistir maxOperarios
		// TODO consistir tempo

		this.maxOperarios = maxOperarios;
		this.tempo = tempo;
	}

	public int getMaxOperarios() {
		return maxOperarios;
	}

	public double getTempo() {
		return tempo;
	}

	public void setLucro(double lucro) {
		// TODO consistir lucro

		this.lucro = lucro;
	}

	public double getLucro() {
		return lucro;
	}

	public void setOperarios(int operarios) {
		// consistir operarios

		if (operarios > getMaxOperarios()) {
			throw new IllegalArgumentException("Esta linha suporta, no máximo, " + getMaxOperarios() + " operários.");
		}

		this.operarios = operarios;
	}

	public int getOperarios() {
		return operarios;
	}

	public double getQuantidadePorDia() {
		return operarios / tempo;
	}

	double getLucroPorDia() {
		return getQuantidadePorDia() * lucro;
	}

}

Na boa pessoal, eu fiz isso aí para praticar um pouco porque aqui no trampo tenho feito muita documentação (:(). Assim desenferrujo um pouco na OO. rsrsrs Acho que dá para melhorar um pouco mais… :wink:

Que tal fazermos disso um debate sobre OOD? Quais melhorias ou qual outro design o pessoal teria usado?

[]s

alucardeck

ramonchiara:
Deixei no ponto, hein…

vc fez a lição de casa do cara?

aff ¬¬ espero q nunca mais faça isso

ramonchiara

alucardeck… Perceba que eu NÃO fiz a lição dele!!! Você viu o comentário no final da mensagem???
Aliás, acabei de achar um erro no que eu fiz!!! :twisted:

TangZero

Caraca… porque quando eu estava na facu, não pensei nisso…poderia ter postado meus exercícios aki… :lol:

ramonchiara

Galera,

Se vocês lerem o código, verão que eu NÃO fiz o exercício do cara… Eu TAMBÉM sou CONTRA a fazer os exercícios aqui!!!

Apenas “traduzi” as fórmulas em Java e tentei ser o mais OO possível… Tentando evitar o “modelo anêmico”. Isso foi um exercício PARA MIM!!!

De quebra, se o cara tiver “saco” de ler o que eu fiz (porque, para terminar o exercício ele VAI TER que fazer isso) ele pode aprender ainda mais!!! Vocês não concordam?

Grande abraço para todos

TangZero

ramonchiara:
Galera,

Se vocês lerem o código, verão que eu NÃO fiz o exercício do cara… Eu TAMBÉM sou CONTRA a fazer os exercícios aqui!!!

Apenas “traduzi” as fórmulas em Java e tentei ser o mais OO possível… Tentando evitar o “modelo anêmico”. Isso foi um exercício PARA MIM!!!

De quebra, se o cara tiver “saco” de ler o que eu fiz ele pode aprender ainda mais!!! Vocês não concordam?

Grande abraço para todos

Relaxa… estamos brincando contigo.
Desculpe se te ofendi. Sei que se intuíto era “Ensinar a pescar ao invés de dar o peixe”.

ramonchiara

:smiley:

pasqualli2006

Realmente obrigado, não colei, tinha dificuldade com a “logica” do problema, mas no fim com sua ajuda deu certo, valew.

Criado 11 de agosto de 2008
Ultima resposta 11 de ago. de 2008
Respostas 9
Participantes 5