Terminei hoje um exercício que um professor nos pediu na faculdade. Sei que ainda precisa melhorar um bocado, como por exemplo embutir um tratamento de exceções decente, etc... Fora isso, gostaria que quem puder dê uma olhada no geral e me diga se pra iniciante está de bom tamanho. Lá vai:
/*03/04/2004
*Esta classe implementa a resolução do exercício proposto
*onde o objetivo é procurar um valor dentro de um vetor
*contendo números aleatórios,respondendo ao final da procura
*se o valor foi encontrado ou não; depois ordenar este vetor
*e procurar por outro valor, novamente fornecendo a resposta
*de encontrado ou não. */
import java.io.*;
class Exercicio0604 {
static int[] vetor = new int[50];
static int i;
static int j = 0;
static int z = 0;
static boolean encontrado;
public static void main(String args[]) {
criaVetor();
System.out.println("Conjunto de 50 numeros inteiros aleatorios:");
mostra();
System.out.println();
procura(entrada("Forneca o valor de X:"),'l');
System.out.println();
ordena();
System.out.println("Conjunto ordenado:");
mostra();
System.out.println();
procura(entrada("Forneca o valor de Y:"),'b');
System.out.println();
}
//preenchendo o vetor com números aleatórios
public static void criaVetor() {
for (i=0;i<vetor.length;i++){
vetor[i] = (int)(Math.random()*100);
}
}
//exibindo o conteúdo do vetor
public static void mostra() {
for (i=0;i<vetor.length;i++){
System.out.print(vetor[i] + " ");
}
System.out.println();
}
//procurando um valor no vetor...
public static void procura(int num,char tipo) {
//...aqui, através do método de busca linear
if (tipo=='l'){
encontrado = false;
i = 0;
while (i<vetor.length && ! encontrado){
if (num == vetor[i]){
encontrado = true;
}
i++;
}
}
//...aqui, através do método de busca binária
else {
encontrado = false;
i = 0;
z = vetor.length;
while (i<z && ! encontrado){
j = (i+z)/2;
if (num==vetor[j]) {
encontrado = true;
}
else if(num<vetor[j]){
z = j;
}
else{
i = j+1;
}
}
}
if (encontrado) {
System.out.println("O numero fornecido esta no vetor.");
}
else {
System.out.println("O numero fornecido nao esta no vetor.");
}
}
//solicitando ao usuário uma entrada de dados
public static int entrada(String frase){
System.out.print(frase);
int ent = 0;
try {
BufferedReader e = new BufferedReader(new InputStreamReader(System.in));
ent = Integer.parseInt(e.readLine());
}
catch (IOException e) {
System.out.println("Erro na entrada de dados");
}
return(ent);
}
//ordenando o vetor através do método de inserção direta
public static void ordena() {
for (i=vetor.length-1;i>0;i--) {
z = vetor[i-1];
j = i;
while (j<vetor.length && z>vetor[j]) {
vetor[j-1] = vetor[j];
j++;
}
vetor[j-1] = z;
}
}
}
[color="red"]Editado para conter BBCode por JuJo[/color]
