Guest darkangel_13 Posted March 30, 2013 at 04:48 PM Report #500936 Posted March 30, 2013 at 04:48 PM Tou a fazer um exercicio em que básicamente tenho que ler um ficheiro cuja primeira linha tem o numero de objectos a ser criados, a minha duvida é como é que eu crio vários objectos ? visto que essa linha tanto pode dizer 5 como 6 como 2 como 1 .. Cumps
pedrotuga Posted March 30, 2013 at 06:17 PM Report #500942 Posted March 30, 2013 at 06:17 PM Parece um exercício típico em que lês um inteiro do standard input w fazes um ciclo for usnado esse inteiro como condição de paragem. Os obejctos podes por exemplo ir adicionando ao final de um ArrayList.
Guest darkangel_13 Posted March 30, 2013 at 11:35 PM Report #500961 Posted March 30, 2013 at 11:35 PM Basicamente tem que se adicionar contentores a um barco.. Cuja a leitura da primeira linha do ficheiro é o numero de contentores e as restantes referem-se respectivamente numa linha à capacidade livre e ao tipo de contentor ex: 3 3.4 2 4.5 1 A minha duvida é como é que eu vou criar os contentores ( tenho a classe já criada) de forma ciclica pois tanto podem ser 3 contentores como 10
HappyHippyHippo Posted March 31, 2013 at 09:54 AM Report #500987 Posted March 31, 2013 at 09:54 AM apresenta o código que já tens IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Guest darkangel_13 Posted March 31, 2013 at 01:09 PM Report #501000 Posted March 31, 2013 at 01:09 PM (edited) Classe Barco // Numero maximo de contentores public static final int MAX_CONTENTORES = 9; // Numero maximo de mercadorias public static final int MAX_MERCADORIAS = 30; /** * Construtor * * @param in - de onde se leem os dados sobre os contentores * numero de contentores e características de cada contentor. * @requires in != null && ficheiro in deve ter o seguinte formato * 1a linha - numero de contentores, * 2a e restantes linhas - dados de um contentor: * capacidade livre do contentor (em t) e tipo do contentor. * @ensures quantosContentores() <= MAX_CONTENTORES * && quantasMercadorias() == 0 && peso() eh zero */ public Barco(BufferedReader in) throws IOException /** * Quantos contentores ha neste barco. */ public int quantosContentores() /** * Quantas mercadorias ha neste barco. */ public int quantasMercadorias() /** * Peso total do carregamento. */ public double peso() /** * Carrega o barco. * @param in - de onde se leem os dados sobre as mercadorias * sequencia de mercadorias e suas caracteristicas. * @requires in != null && ficheiro in deve ter o seguinte formato * cada linha define uma mercadoria: peso (em t) e qualidade. * @ensures o barco esta carregado de acordo com o algoritmo. */ public void carrega(BufferedReader in) throws IOException /** * Guardar os resultados do carregamento num ficheiro de texto. * * @param out - onde se guardam os resultados * @requires out != null * @ensures out esta preenchido da seguinte forma: * - Para cada contentor, uma linha contendo: * numero do contentor, sequencia de mercadorias a carregar no contentor, * capacidade livre do contentor e informacao sobre se esta cheio ou não. * - Uma linha contendo o peso total das mercadorias carregadas. * - Uma linha (ultima) contendo o numero total de mercadorias carregadas. */ public void guardaCarregamento(BufferedWriter out) throws IOException Classe Contentor // Peso maximo a carregar no contentor public static final double MAX_PESO = 100.0; // Matriz de compatibilidades: // 1's sao compatibilidades; // 0's sao incompatibilidades public static int[][] compatibilidade = { { 1, 0, 1 }, { 0, 1, 0 }, { 1, 0, 1 } }; /* exemplo: a 1ª linha - {1, 0, 1} - indica que os contentores de tipo 1 * sao compativeis com as mercadorias das qualidades 1 e 3 */ /** * Construtor * * @param numero - numero do contentor * @param capInicial - capacidade livre (em t) do contentor * @param tipo - tipo do contentor * @requires numero >=1 && numero <=9 && capInicial >= 0.0 && * capInicial <= MAX_PESO && tipo >=1 && tipo <= 3 * @ensures numero() == numero && capLivre () == capInicial && tipo() == * tipo */ public Contentor(int numero, double capInicial, int tipo) /** * A capacidade livre do contentor em toneladas. */ public double capLivre () /** * O tipo do contentor. */ public int tipo() /** * Quantas mercadorias ha no contentor. */ public int quantasMercadorias() /** * Eh compativel com qualidade? * * @param qualidade - qualidade de mercadoria */ public boolean ehCompativel(int qualidade) /** * Esta cheio? */ public boolean estaCheio() /** * Actualiza contentor com mercadoria * * @param mercadoria - numero da mercadoria * @param qualidade - qualidade da mercadoria * @param peso - peso da mercadoria * @requires ehCompativel(qualidade) && capLivre() >= peso * @ensures capLivre() diminuiu peso unidades. */ public void carrega(int mercadoria, int qualidade, double peso) /** * Representacao textual do contentor * * @return uma String contendo o numero do contentor, a sequencia de * mercadorias a carregar no contentor, a capacidade livre, * e se o contentor esta cheio ou nao. * Exemplo: * contentor 2: 1 2 4 6 7 8; cap livre = 3.0 / nao cheio */ public String toString() Classe Run import java.io.*; /** * Classe que permite testar as classes Barco.java e Contentor.java * @author respicio * @Date Marco 2011 */ public class RunBarco { public static void main(String[] args) throws IOException { BufferedReader contentores; BufferedReader in; BufferedWriter out; Barco barco; /* dados sobre os contentores do barco */ contentores = new BufferedReader( new FileReader("contentores.txt") ); /* dados sobre as mercadorias a carregar */ in = new BufferedReader( new FileReader("input.txt") ); out = new BufferedWriter( new FileWriter("output.txt") ); barco = new Barco(contentores); /* cria barco com os dados dos contentores*/ barco.carrega(in); /* le dados das mercadorias e determina carregamento */ barco.guardaCarregamento(out); contentores.close(); in.close(); out.close(); } } Obrigado pelas respostas ! Edited March 31, 2013 at 01:11 PM by darkangel_13
HappyHippyHippo Posted March 31, 2013 at 11:05 PM Report #501049 Posted March 31, 2013 at 11:05 PM 1º - o número de linhas de código das classes apresentadas : zero 2º - o número de linhas de código relevante da leitura do ficheiro : zero 3º - nem vou comentar o construtor da classe Barco : o reader ??? 4º - o que tens de fazer é ler do ficheiro quantos objectos tens de instância e com um ciclo os instânciar IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Guest darkangel_13 Posted April 1, 2013 at 11:12 AM Report #501071 Posted April 1, 2013 at 11:12 AM (edited) Essas classes não fui eu que fiz, foi o que me foi dado .. public Barco(BufferedReader in) throws IOException //Aqui criei um objecto scanner que recebe o in //Li o ficheiro para uma matriz //Agora como faço para criar o numero de objectos necessarios ? ou seja o numero de contentores Mas eu preciso de dar nomes aos contentores certo? para poder instâncias, é possível fazer algo do genero Contentor $i =new Contentor(..); em que i assuma varios valores ?Assim poderia fazer com um ciclo Edited April 1, 2013 at 11:29 AM by darkangel_13
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now