AJUDA JAVA!!!
Olá preciso de ajuda para resolver os métodos e atributos que faltam para adicionar nomes e aniversariantes maiores de 18 anos.
Ps.: Minha grade foi alterada e tive que pegar matérias avançadas sem terminar LPI…
Segue problema e algoritmo necessário:
Faça um programa que apresente o menu de opções abaixo. As operações devem ser implementadas em uma tabela hashing. Utilize como chave da tabela o mês de aniversário. Suponha que a tabela possua tamanho 20 e que seja implementada como uma de endereçamento aberto (tentativa linear).
Menu
1 – Cadastrar amigo (nome, dia e mês de aniversário)
2 – Consultar aniversariantes de um mês
3 – Contar as pessoas com idade superior a 18
4 – Excluir uma pessoa pelo nome
5 – Sair
import java.util.Scanner;
public class Hash_Aberto1 {
public static class hash {
int chave;
char livre; //L = livre O = ocupado, R = removido
}
static int tam=20; //tamanho função hashing
static hash tabela[]=new hash[tam];
static Scanner entrada = new Scanner(System.in);
public static void inserir(int pos, int n) {
int i=0;
while (i < tam
&& tabela[(pos+i)%tam].livre != 'L'
&& tabela[(pos+i)%tam].livre != 'R')
i = i+1;
if (i < tam) {
tabela[(pos+i)%tam].chave = n;
tabela[(pos+i)%tam].livre = 'O';
}
else
System.out.println("Tabela Cheia");
}
public static void remover(int n) {
int posicao = buscar(n);
if (posicao < tam)
tabela[posicao].livre = 'R';
else
System.out.println("Elemento não encontrado");
}
public static int buscar(int n) {
int i=0;
int pos=funcao_hashing(n);
while (i < tam
&& tabela[(pos+i)%tam].livre != 'L'
&& tabela[(pos+i)%tam].chave != n)
i = i+1;
if
(tabela[(pos+i)%tam].chave == n
&& tabela[(pos+i)%tam].livre != 'R')
return (pos+i)%tam;
else
return tam;
}
static int funcao_hashing(int num) {
return num % tam;
}
static void mostrar_hash() {
for(int i=0; i< tam; i++)
if(tabela[i].livre == 'O')
System.out.println("Entrada"+i+ ": "
+ tabela[i].chave + " "
+ tabela[i].livre);
}
public static void main(String[] args) {
int op, pos;
int num, i;
// inicialização da tabela
for(i = 0; i < tam; i++) {
tabela[i] = new hash();
tabela[i].livre = 'L';
}
do {
System.out.println("\nMenu\n");
System.out.println("1 - Cadastrar Amigo");
System.out.println("2 - Consultar aniversariante de um mes");
System.out.println("3 - Consultar pessoas com idade superior a 18 anos");
System.out.println("4 - Excluir pessoa pelo nome");
System.out.println("5 - Sair");
op = entrada.nextInt();
if (op < 1 || op > 5)
System.out.println("Opcao Invalida!");
else {
switch(op) {
case 1:
System.out.println("Digite nome e mes");
num = entrada.nextInt();
pos = funcao_hashing(num);
inserir(pos, num);
break;
case 2:
mostrar_hash();
break;
case 3:
mostrar_hash();
break;
case 4:
System.out.println("Digite um nome");
num = entrada.nextInt();
remover(num);
break;
}
}
}
while (op!=5);
}
}