Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
Carregando comentários...