Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace Estudo
- {
- class MainClass
- {
- public static void Main (string[] args)
- {
- int nPos;
- string conf;
- conf = "0";
- do
- {
- Console.WriteLine("**Programa para Estudos Sobre Vetor***\n");
- Console.WriteLine("Digite 1 e aperte ENTER para iniciar o programa\nDigite 2 e aperte ENTER para finalizar o programa");
- conf = Console.ReadLine();
- if ((conf != "1") && (conf != "2"))
- {
- Console.WriteLine("Entre apenas com 1 ou 2!");
- Console.ReadKey();
- Console.Clear ();
- }
- }while ((conf != "1") && (conf != "2"));
- Console.Clear ();
- do
- {
- if (conf == "1")
- {
- Console.WriteLine("Insira abaixo o número de posições do vetor e aperte ENTER:");
- nPos = int.Parse(Console.ReadLine());
- int[] numeros = new int[nPos]; //{23,36,21,56,76,54,8,9,99}; <-- se eu quiser definir um vetor com números específicos para cada posição
- Console.Clear();
- Console.WriteLine("Você definiu a quantidade de {0} posiçoes.\nAperte ENTER para prosseguir...", nPos);
- Console.ReadKey();
- Console.Clear();
- for (int i = 0; i < numeros.Length; i++)
- {
- Console.Write("Insira o conteúdo númérico da posição {0} do vetor: ", i+1);
- numeros[i] = int.Parse(Console.ReadLine());
- Console.Clear ();
- }
- Console.WriteLine("Aperte ENTER para ordenar o conteúdo das posiçoes:");
- Console.ReadKey();
- Console.Clear();
- //Ordenação do Vetor
- for (int i = 0; i < numeros.Length - 1; i++)
- {
- for (int o = i + 1; o < numeros.Length; o++)
- {
- if (numeros [o] < numeros [i])
- {
- int auxiliar = numeros [o];
- numeros [o] = numeros [i];
- numeros [i] = auxiliar;
- }
- }
- }
- //Início da busca binária
- int meio, fim, inicio, busca;
- bool naoAchou;
- inicio = 0;
- fim = numeros.Length;
- meio = (inicio + fim) / 2;
- naoAchou = false;
- do
- {
- //Exibição das posições do vetor e seu conteúdo respectivo
- for (int i = 0; i < numeros.Length; i++)
- {
- Console.Write ("Posição {0}: ", i);
- Console.WriteLine (numeros [i]);
- }
- Console.WriteLine ("Escreva abaixo o valor que deseja buscar e o programa \n apresentará a posição correspondente no vetor:");
- busca = Convert.ToInt32 (Console.ReadLine ());
- if ((busca > numeros[nPos-1]) || (busca < numeros[0]))
- {
- Console.WriteLine("Digite apenas números dentro do intervalo do vetor\n(menor= {0} / maior= {1})", numeros[0], numeros[nPos-1]);
- Console.ReadKey();
- Console.Clear();
- }
- }while((busca > numeros[nPos-1]) || (busca < numeros[0])) ;
- //Lógica da busca binária
- while ((numeros[meio] != busca) && (naoAchou == false))
- {
- if (busca > numeros [meio])
- {
- inicio = meio + 1;
- meio = (inicio + fim) / 2;
- }
- else if (busca < numeros [meio])
- {
- fim = meio - 1;
- meio = (inicio + fim) / 2;
- }
- if ((inicio > fim) || (fim < inicio))
- {
- naoAchou = true;
- }
- }
- //Exibição da posição buscada
- Console.WriteLine ();
- if (busca == numeros [meio])
- {
- Console.WriteLine("Você buscou o número {0}, na posição {1}!", busca, meio);
- Console.WriteLine("Aperte ENTER para prosseguir...");
- Console.ReadKey();
- Console.Clear();
- }
- else if (naoAchou == true)
- {
- Console.WriteLine ("Não encontrado no índice");
- Console.WriteLine("Aperte ENTER para prosseguir...");
- Console.ReadKey();
- Console.Clear();
- }
- do
- {
- Console.WriteLine("Deseja testar o programa novamente?");
- Console.Write ("Digite 1 para SIM ou 2 para NÃO: ");
- conf = Console.ReadLine();
- if ((conf != "1") && (conf != "2"))
- {
- Console.WriteLine("Entre apenas com 1 ou 2!");
- Console.ReadKey();
- Console.Clear ();
- }
- Console.Clear();
- }while ((conf != "1") && (conf != "2"));
- }
- if (conf == "2")
- {
- Console.WriteLine("Obrigado!");
- Console.ReadKey();
- }
- } while (conf == "1");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement