none
Dúvida em C# (Iniciante) RRS feed

  • Pergunta

  • Pessoal, tenho uma aplicação que irá armazenar 5 nomes em um Array, e preciso retorná-los em ordem alfabética, já consegui desenvolver o que precisava, mas eu queria colocar uma implementaçãozinha no final, perguntar pro usuário de ele deseja armazenar "novamente" como faço isso? estou apenas estudando então é tudo a nível de estudo mesmo...segue abaixo o Código:

     

    O programa funciona, só gostaria de saber como faço essa implementação.

     

    namespace Ordena‡Æo2

    {

    class Program

    {

    static void Main(string[] args)

    {

    string[] nomes = new string[5];

    string x; // vari vel de apoio na troca de valores

    int comparacao;

    int contN=1;

    //Armazenando os elementos no Vetor

    Console.WriteLine(" --DIGITE 5 NOMES PARA RETORNA-LOS EM ORDEM ALFABETICA--\n");

    Console.WriteLine("");

    Console.WriteLine("PRESSIONE <ENTER>");

    Console.ReadLine();

    for (int i = 0; i < nomes.Length; i++)

    {

    Console.WriteLine("DIGITE O {0}§ ELEMENTO DO ARRAY)", contN);

    nomesIdea = Console.ReadLine();

    contN++;

    }

    for (int i=0; i < 4; i++)

    {

    for (int j=i+1; j < 5; j++)

    {

    comparacao = nomesIdea.CompareTo(nomes[j]);

    if (comparacao > 0)

    {

    x = nomesIdea;

    nomesIdea = nomes[j];

    nomes[j] = x;

    }

    }

    }

    Console.WriteLine("");

    Console.WriteLine("------------ELEMENTOS EM ORDER ALFABTICA------------\n");

    for (int i = 0; i < nomes.Length; i++)

    {

    Console.WriteLine("\t{0}",nomesIdea);

    }

    Console.ReadLine();

    }

    }

    }

     

    Abraço á Todos

    segunda-feira, 12 de maio de 2008 15:05

Respostas

  • Olá David,

     

    Coloca sua rotina dentro de um do while exemplo

     

    Code Snippet

    static void Main(string[] args)

    {

        bool executarNovamente =false;

        do

        {

            Console.Clear();

           

            // Sua rotina !!!

     

            //Se pressionar Enter executa novamente

            executarNovamente = (Console.ReadKey().Key == ConsoleKey.Enter) ? true : false;

        } while (executarNovamente);

    }

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

    segunda-feira, 12 de maio de 2008 15:19

Todas as Respostas

  • Olá David,

     

    Coloca sua rotina dentro de um do while exemplo

     

    Code Snippet

    static void Main(string[] args)

    {

        bool executarNovamente =false;

        do

        {

            Console.Clear();

           

            // Sua rotina !!!

     

            //Se pressionar Enter executa novamente

            executarNovamente = (Console.ReadKey().Key == ConsoleKey.Enter) ? true : false;

        } while (executarNovamente);

    }

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,

    segunda-feira, 12 de maio de 2008 15:19
  • Olá Daniel, funcionou como você disse...preciso praticar mais o Do While, só me explica por gentileza esse trecho do código pra eu entender

     

    Code Snippet

     

    //Entendi o que ele faz, mas qual a função do interrogação (?) nesse trecho

    //É como se vc perguntasse para o programa em tempo de execução?

    executarNovamente = (Console.ReadKey().Key == ConsoleKey.Enter) ? true : false;

     

     

    Obrigado pela Atenção!!
    segunda-feira, 12 de maio de 2008 17:56
  • Olá David trata-se de operador ternário da uma olhada na documentação nesse link :

     

    http://msdn.microsoft.com/en-us/library/ty67wk28(VS.80).aspx

     

    Só para você entender o que eu fiz é apenas um simples if se você fizer assim o resultado é o mesmo

     

    Code Snippet

    if(Console.ReadKey().Key == ConsoleKey.Enter){

    executarNovamente  = true;

    }else{

    executarNovamente  = fasle;

    }

     

     

     

    Se a resposta for útil por favor não esqueça de marca.
    Abraço,
    segunda-feira, 12 de maio de 2008 18:10
  • Olá David,

    Está dizendo que se a tecla apertada for "ENTER", executarNovamente terá seu valor mudado para true. Caso contrário, para false.

    Isso é mais conhecido como operador ternário.

    (<EXPRESSÃO_BOOLEANA>) ? <VERDADEIRO> : <FALSO>

    Onde:
    <EXPRESSÃO_BOOLEANA> é uma expressão a qual se deseja verificar, ex: 1 > 2

    <VERDADEIRO> acontece caso a expressão seja verdadeira

    <FALSO> acontece caso a expressão seja falsa.

    Isso não quer dizer que <VERDADEIRO> e <FALSO> devam conter true e false, respectivamente. Você poderia fazer isso:


    (Console.ReadKey().Key == ConsoleKey.Enter) ? Console.Write("Tecla ENTER foi pressionada.") : Console.Write("Outra tecla foi pressionada.")

    Entendeu?

    Falow!
    segunda-feira, 12 de maio de 2008 18:33
  • Caro Marco,

     

    O Operador Condicional ?: precisa retornar um valor que deve ser utilizado na linha de código onde ele está inserido, por exemplo atribuindo o valor retornado a uma variável, caso contrário o compilador acusará o erro. Por isso, o código

     

    (Console.ReadKey().Key == ConsoleKey.Enter) ? Console.Write("Tecla ENTER foi pressionada.") : Console.Write("Outra tecla foi pressionada.")

    não funciona.

     

    Sds.

     

    Cesar Lima

     

     

    terça-feira, 13 de maio de 2008 22:01