Everton. 0 Denunciar post Postado Julho 2, 2011 Escrever um algoritmo que leia um conjunto de até 500 valores inteiros. O valor 0 (zero) finaliza a entrada de dados. Para cada valor lido, determinar se ele é um número par ou ímpar. Se o número for par, então incluí-lo na FILA PAR; caso contrário, incluí-lo na FILA ÍMPAR. Após o término da entrada de dados, retirar um elemento de cada fila alternadamente (iniciando-se pela FILA ÍMPAR) até que ambas as filas estejam vazias. Se o elemento retirado de uma das filas for divisível por 3 (três), então incluí-lo em uma PILHA; caso contrário, remover um elemento da PILHA. Finalmente, exiba o conteúdo da pilha. Implementação da pilha package exercicio_02; public class Pilha { private int elementos[]; private int topo; public Pilha(int tam) { elementos = new int[tam]; topo = -1; } public int push(int elem) { if (topo == elementos.length - 1) { // Pilha cheia!! não é possível inserir novos elementos! return -1; } else { topo++; elementos[topo] = elem; return 1; } } public int pop() { int e; if (topo == -1) { // Pilha vazia!! Não é possível remover o elemento do topo return -1; } else { e = elementos[topo]; topo--; return e; } } public boolean vazia(){ if (topo >= 0) return false; else return true; } public int topo(){ return elementos[topo]; } public int numElementos(){ return topo + 1; } public boolean estaNaFila(int e){ boolean achou = false; for(int i = 0; i <= topo; i++) if(elementos[i] == topo) achou = true; return achou; } public void imprime(){ for(int i = 0; i <= topo; i++){ System.out.print(" " + elementos[i] + " -"); } System.out.println("--> TOPO\n"); } } Implementação da fila package exercicio_02; public class Fila { int elementos[], inicio, fim, nElementos; public Fila(int tam) { elementos = new int[tam]; inicio = fim = -1; nElementos = 0; } public int insere(int e) { if (nElementos == elementos.length) { // Fila Cheia!!! return -1; } else { nElementos++; fim = (fim + 1) % elementos.length; elementos[fim] = e; if (nElementos == 1) { inicio = fim; } return 1; } } public int remove() { int e; if (nElementos == 0) { // Fila Vazia!!!! return -1; } else { e = elementos[inicio]; nElementos--; inicio = (inicio + 1) % elementos.length; return e; } } } Implementação da main package exercicio_02; import java.util.ArrayList; import java.util.List; import java.util.Scanner; // Alan Sullivan - Rafael Pinheiro public class Main { public static void main(String[] args) { int e, i, totalListas; List<Integer> listaPares = new ArrayList<Integer>(); List<Integer> listaImpares = new ArrayList<Integer>(); Fila fila_pares, fila_impares; Pilha pilha; Scanner entrada = new Scanner(System.in); System.out.print("Digite um valor inteiro: "); e = entrada.nextInt(); // recebe número inteiro while (e != 0) { if (e % 2 == 0) { listaPares.add(e); //Adiciona na Lista Par } else { listaImpares.add(e); //Adiciona na Lista Impar } System.out.print("Digite um valor inteiro: "); e = entrada.nextInt(); // recebe número inteiro } fila_pares = new Fila(listaPares.size()); fila_impares = new Fila(listaImpares.size()); for (i = 0; i < listaPares.size(); i++) { e = listaPares.get(i); fila_pares.insere(e); } for (i = 0; i < listaImpares.size(); i++) { e = listaImpares.get(i); fila_impares.insere(e); } totalListas = listaPares.size() + listaImpares.size(); pilha = new Pilha(totalListas); for (i = 1; i <= totalListas; i++) { if (i % 2 == 0) { e = fila_pares.remove(); } else { e = fila_impares.remove(); } if (e % 3 == 0) { pilha.push(e); } else { pilha.pop(); } } pilha.imprime(); } } Só com reza braba. x.x Compartilhar este post Link para o post Compartilhar em outros sites
Giovanni Ritchie 0 Denunciar post Postado Julho 3, 2011 você n explicou que problema está tendo com seu código? Algum erro de compilação?? Lógica?? O que é que não está funcionando?? Tem certeza que esse método é para classe pilha? public boolean estaNaFila(int e){ boolean achou = false; for(int i = 0; i <= topo; i++) if(elementos[i] == topo) achou = true; return achou; } Posta aí o que está acontecendo p gente poder dar uma ajuda.. Abraço Compartilhar este post Link para o post Compartilhar em outros sites