Percursos
/
C#
C#
/
Exercícios
/
Análise de números de telefone
Análise de números de telefone

Análise de números de telefone

Exercício de aprendizagem

Introdução

Tuplos

Em C#, um tuplo é uma estrutura de dados que organiza dados e contém dois ou mais campos de qualquer tipo.

Normalmente, cria-se um tuplo colocando duas ou mais expressões separadas por vírgulas, entre parênteses.

string boast = "All you need to know";
bool success = !string.IsNullOrWhiteSpace(boast);
(bool, int, string) triple = (success, 42, boast);

Um tuplo pode ser usado em operações de atribuição e inicialização, como valor devolvido ou como argumento de um método.

Os campos são extraídos com a sintaxe de ponto. Por predefinição, o primeiro campo é Item1, o segundo Item2, etc. Os nomes não predefinidos são abordados abaixo.

// initialization
(int, int, int) vertices = (90, 45, 45);

// assignment
vertices = (60, 60, 60);

//  return value
(bool, int) GetSameOrBigger(int num1, int num2)
{
    return (num1 == num2, num1 > num2 ? num1 : num2);
}

// method argument
int Add((int, int) operands)
{
    return operands.Item1 + operands.Item2;
}

Os nomes de campo Item1, etc. não contribuem para um código legível. O código abaixo mostra duas formas de dar nome aos campos dos tuplos. Repara também, no código abaixo, que var pode ser usado com tuplos e que o tipo é inferido. Isto funciona igualmente bem para tuplos com campos com nome e sem nome.

// name items in declaration
(bool success, string message) results = (true, "well done!");
bool mySuccess = results.success;
string myMessage = results.message;

// name items in creating expression
var results2 = (success: true, message: "well done!");
bool mySuccess2 = results2.success;
string myMessage2 = results2.message;

Instruções

Neste exercício vais analisar números de telefone.

Pedem-te para implementares 2 funcionalidades.

Os números de telefone que são passados às rotinas estão garantidamente no formato NNN-NNN-NNNN, por exemplo 212-515-9876, e não são nulos.

1. Analisa um número de telefone

A tua análise deve devolver 3 dados:

  1. Uma indicação de se o número tem indicativo de Nova Iorque, ou seja, 212 como os primeiros 3 algarismos
  2. Uma indicação de se o número é falso, por ter 555 como prefixo nas posições 5 a 7 (a contar a partir de 1)
  3. Os últimos 4 algarismos do número.

Implementa o método (estático) PhoneNumber.Analyze() para produzir a informação do número de telefone.

PhoneNumber.Analyze("631-555-1234");
// => (false, true, "1234")

2. Deteta se um número de telefone tem um prefixo falso (555)

Implementa o método (estático) PhoneNumber.IsFake() para detetar se o número de telefone é falso, usando a informação do número de telefone produzida na tarefa 1.

PhoneNumber.IsFake(PhoneNumbers.Analyze("631-555-1234"));
// => true
Editar via GitHub A ligação abre numa nova janela ou separador
C# Exercism

Estás pronto para começar Análise de números de telefone?

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