Percursos
/
C#
C#
/
Exercícios
/
Conhecedor de chamadas internacionais
Conhecedor de chamadas internacionais

Conhecedor de chamadas internacionais

Exercício de aprendizagem

Introdução

Dicionários

Um dicionário é uma coleção de elementos em que cada elemento é composto por uma chave e um valor, de tal forma que, se se passar uma chave a um método do dicionário, este devolve o valor associado. Tem o mesmo papel que os mapas ou os arrays associativos têm noutras linguagens.

Podes criar um dicionário da seguinte forma:

new Dictionary<int, string>();
// Empty dictionary

Ou

new Dictionary<int, string>
{
    [1] = "One",
    [2] = "Two"
};

// Or

new Dictionary<int, string>
{
    {1, "One"},
    {2, "Two"}
};
// 1 => "One", 2 => "Two"

Repara que os tipos da chave e do valor fazem parte da definição do dicionário.

Depois de criado, podes adicionar ou remover entradas de um dicionário com os seus métodos incorporados Add e Remove.

Podes obter ou atualizar valores num dicionário indexando o dicionário com uma chave:

var numbers = new Dictionary<int, string>
{
   {1, "One"},
   {2, "Two"}
};

// Set the value of the element with key 2 to "Deux"
numbers[2] = "Deux";

// Get the value of the element with key 2
numbers[2];
// => "Deux"

Podes testar se um valor existe no dicionário com:

var dict = new Dictionary<string, string>{/*...*/};
dict.ContainsKey("some key that exists");
// => true

A enumeração de um dicionário percorre os seus pares chave/valor. Os dicionários também têm propriedades que permitem enumerar as suas chaves ou os seus valores.

Instruções

Neste exercício vais escrever código para manteres um registo de indicativos internacionais de telefone através de um dicionário de indicativos internacionais.

O dicionário usa um número inteiro para as chaves (o indicativo) e uma string (o nome do país) para os valores.

Tens 9 tarefas que envolvem a classe estática DialingCodes.

1. Cria um novo dicionário

Implementa o método (static) DialingCodes.GetEmptyDictionary() que devolve um dicionário vazio.

DialingCodes.GetEmptyDictionary();
// => empty dictionary

2. Cria um dicionário pré-preenchido

Existe um dicionário pré-preenchido que contém os seguintes 3 indicativos: "United States of America", com o código 1, "Brazil", com o código 55, e "India", com o código 91. Implementa o método (static) DialingCodes.GetExistingDictionary() para devolver o dicionário pré-preenchido:

DialingCodes.GetExistingDictionary();
// => 1 => "United States of America", 55 => "Brazil", 91 => "India"

3. Adiciona um país a um dicionário vazio

Implementa o método (static) DialingCodes.AddCountryToEmptyDictionary() que cria um dicionário e lhe adiciona um indicativo e o nome do país associado.

DialingCodes.AddCountryToEmptyDictionary(44, "United Kingdom");
// => 44 => "United Kingdom"

4. Adiciona um país a um dicionário existente

Implementa o método (static) DialingCodes.AddCountryToExistingDictionary() que adiciona um indicativo e o nome do país associado a um dicionário não vazio.

DialingCodes.AddCountryToExistingDictionary(DialingCodes.GetExistingDictionary(),
  44, "United Kingdom");
// => 1 => "United States of America", 44 => "United Kingdom", 55 => "Brazil", 91 => "India"

5. Obtém o nome do país correspondente a um indicativo

Implementa o método (static) DialingCodes.GetCountryNameFromDictionary() que recebe um indicativo e devolve o nome do país correspondente. Se o indicativo não estiver contido no dicionário, é devolvida uma string vazia.

DialingCodes.GetCountryNameFromDictionary(
  DialingCodes.GetExistingDictionary(), 55);
// => "Brazil"

DialingCodes.GetCountryNameFromDictionary(
  DialingCodes.GetExistingDictionary(), 999);
// => string.Empty

6. Verifica se um país existe no dicionário

Implementa o método (static) DialingCodes.CheckCodeExists() para verificar se um indicativo existe no dicionário.

DialingCodes.CheckCodeExists(DialingCodes.GetExistingDictionary(), 55);
// => true

7. Atualiza o nome de um país

Implementa o método (static) DialingCodes.UpdateDictionary() que recebe um indicativo e substitui o nome do país correspondente no dicionário pelo nome do país passado como parâmetro. Se o indicativo não existir no dicionário, o dicionário fica inalterado.

DialingCodes.UpdateDictionary(
  DialingCodes.GetExistingDictionary(), 1, "Les États-Unis");
// => 1 => "Les États-Unis", 55 => "Brazil", 91 => "India"

DialingCodes.UpdateDictionary(
  DialingCodes.GetExistingDictionary(), 999, "Newlands");
// 1 => "United States of America", 55 => "Brazil", 91 => "India"

8. Remove um país do dicionário

Implementa o método (static) DialingCodes.RemoveCountryFromDictionary() que recebe um indicativo e remove do dicionário o registo correspondente, ou seja, o indicativo e o nome do país.

DialingCodes.RemoveCountryFromDictionary(
  DialingCodes.GetExistingDictionary(), 91);
// => 1 => "United States of America", 55 => "Brazil"

9. Encontra o país com o nome mais longo

Implementa o método (static) DialingCodes.FindLongestCountryName() que devolve o nome do país com o nome mais longo armazenado no dicionário.

DialingCodes.FindLongestCountryName(
  DialingCodes.GetExistingDictionary());
// => "United States of America"
Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar Conhecedor de chamadas internacionais?

Inscreve-te no Exercism para aprenderes e dominares C# com 62 conceitos178 exercícios, e mentoria humana real, tudo grátis.